| Package | Description | 
|---|---|
| org.springframework.asm | 
 Spring's repackaging of
 ASM 9.x
 (with Spring-specific patches; for internal use only). 
 | 
| org.springframework.context.expression | 
 Expression parsing support within a Spring application context. 
 | 
| org.springframework.core.type.classreading | 
 Support classes for reading annotation and class-level metadata. 
 | 
| org.springframework.expression.spel | 
 SpEL's central implementation package. 
 | 
| org.springframework.expression.spel.ast | 
 SpEL's abstract syntax tree. 
 | 
| org.springframework.expression.spel.support | 
 SpEL's default implementations for various core abstractions. 
 | 
| Modifier and Type | Field and Description | 
|---|---|
protected MethodVisitor | 
MethodVisitor.mv
The method visitor to which this visitor must delegate method calls. 
 | 
| Modifier and Type | Method and Description | 
|---|---|
MethodVisitor | 
ClassWriter.visitMethod(int access,
           String name,
           String descriptor,
           String signature,
           String[] exceptions)  | 
MethodVisitor | 
ClassVisitor.visitMethod(int access,
           String name,
           String descriptor,
           String signature,
           String[] exceptions)
Visits a method of the class. 
 | 
| Constructor and Description | 
|---|
MethodVisitor(int api,
             MethodVisitor methodVisitor)
Constructs a new  
MethodVisitor. | 
| Modifier and Type | Method and Description | 
|---|---|
void | 
MapAccessor.generateCode(String propertyName,
            MethodVisitor mv,
            CodeFlow cf)  | 
| Modifier and Type | Class and Description | 
|---|---|
class  | 
MethodMetadataReadingVisitor
Deprecated. 
 
As of Spring Framework 5.2, this class and related classes in this
 package have been replaced by  
SimpleAnnotationMetadataReadingVisitor
 and related classes for internal use within the framework. | 
| Modifier and Type | Method and Description | 
|---|---|
MethodVisitor | 
AnnotationMetadataReadingVisitor.visitMethod(int access,
           String name,
           String desc,
           String signature,
           String[] exceptions)
Deprecated.  
  | 
| Modifier and Type | Method and Description | 
|---|---|
void | 
CodeFlow.ClinitAdder.generateCode(MethodVisitor mv,
            CodeFlow codeflow)  | 
void | 
CompilablePropertyAccessor.generateCode(String propertyName,
            MethodVisitor mv,
            CodeFlow cf)
Generate the bytecode the performs the access operation into the specified MethodVisitor
 using context information from the codeflow where necessary. 
 | 
static void | 
CodeFlow.insertAnyNecessaryTypeConversionBytecodes(MethodVisitor mv,
                                         char targetDescriptor,
                                         String stackDescriptor)
Insert any necessary numeric conversion bytecodes based upon what is on the stack and the desired target type. 
 | 
static void | 
CodeFlow.insertArrayStore(MethodVisitor mv,
                String arrayElementType)
Produce appropriate bytecode to store a stack item in an array. 
 | 
static void | 
CodeFlow.insertBoxIfNecessary(MethodVisitor mv,
                    char ch)
Determine the appropriate boxing instruction for a specific type (if it needs
 boxing) and insert the instruction into the supplied visitor. 
 | 
static void | 
CodeFlow.insertBoxIfNecessary(MethodVisitor mv,
                    String descriptor)
Determine the appropriate boxing instruction for a specific type (if it needs
 boxing) and insert the instruction into the supplied visitor. 
 | 
static void | 
CodeFlow.insertCheckCast(MethodVisitor mv,
               String descriptor)
Insert the appropriate CHECKCAST instruction for the supplied descriptor. 
 | 
static void | 
CodeFlow.insertNewArrayCode(MethodVisitor mv,
                  int size,
                  String arraytype)
Produce the correct bytecode to build an array. 
 | 
static void | 
CodeFlow.insertNumericUnboxOrPrimitiveTypeCoercion(MethodVisitor mv,
                                         String stackDescriptor,
                                         char targetDescriptor)
For use in mathematical operators, handles converting from a (possibly boxed)
 number on the stack to a primitive numeric type. 
 | 
static void | 
CodeFlow.insertOptimalLoad(MethodVisitor mv,
                 int value)
Create the optimal instruction for loading a number on the stack. 
 | 
static void | 
CodeFlow.insertUnboxInsns(MethodVisitor mv,
                char ch,
                String stackDescriptor)
Insert any necessary cast and value call to convert from a boxed type to a
 primitive value. 
 | 
static void | 
CodeFlow.insertUnboxNumberInsns(MethodVisitor mv,
                      char targetDescriptor,
                      String stackDescriptor)
For numbers, use the appropriate method on the number to convert it to the primitive type requested. 
 | 
void | 
CodeFlow.loadEvaluationContext(MethodVisitor mv)
Push the bytecode to load the EvaluationContext (the second parameter passed to
 the compiled expression method). 
 | 
void | 
CodeFlow.loadTarget(MethodVisitor mv)
Push the byte code to load the target (i.e. 
 | 
void | 
CodeFlow.unboxBooleanIfNecessary(MethodVisitor mv)
If the codeflow shows the last expression evaluated to java.lang.Boolean then
 insert the necessary instructions to unbox that to a boolean primitive. 
 | 
| Modifier and Type | Method and Description | 
|---|---|
void | 
VariableReference.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
OpPlus.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
OpGT.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
OpOr.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
NullLiteral.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
CompoundExpression.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
OpLT.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
OpModulus.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
InlineList.generateCode(MethodVisitor mv,
            CodeFlow codeflow)  | 
void | 
OpDivide.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
OpMultiply.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
OpLE.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
StringLiteral.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
RealLiteral.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
PropertyOrFieldReference.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
FloatLiteral.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
ConstructorReference.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
OperatorNot.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
Elvis.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
Ternary.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
LongLiteral.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
IntLiteral.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
TypeReference.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
MethodReference.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
OpMinus.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
OpEQ.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
OpGE.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
OpAnd.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
OperatorInstanceof.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
Indexer.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
BooleanLiteral.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
SpelNodeImpl.generateCode(MethodVisitor mv,
            CodeFlow cf)
Generate the bytecode for this node into the supplied visitor. 
 | 
void | 
FunctionReference.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
void | 
OpNE.generateCode(MethodVisitor mv,
            CodeFlow cf)  | 
protected static void | 
SpelNodeImpl.generateCodeForArgument(MethodVisitor mv,
                       CodeFlow cf,
                       SpelNodeImpl argument,
                       String paramDesc)
Ask an argument to generate its bytecode and then follow it up
 with any boxing/unboxing/checkcasting to ensure it matches the expected parameter descriptor. 
 | 
protected static void | 
SpelNodeImpl.generateCodeForArguments(MethodVisitor mv,
                        CodeFlow cf,
                        Member member,
                        SpelNodeImpl[] arguments)
Generate code that handles building the argument values for the specified method. 
 | 
protected void | 
Operator.generateComparisonCode(MethodVisitor mv,
                      CodeFlow cf,
                      int compInstruction1,
                      int compInstruction2)
Numeric comparison operators share very similar generated code, only differing in
 two comparison instructions. 
 | 
| Modifier and Type | Method and Description | 
|---|---|
void | 
ReflectivePropertyAccessor.OptimalPropertyAccessor.generateCode(String propertyName,
            MethodVisitor mv,
            CodeFlow cf)  |