public class org.springframework.expression.spel.ast.OpPlus extends org.springframework.expression.spel.ast.Operator
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.springframework.expression.spel.ast.OpPlus
super_class: org.springframework.expression.spel.ast.Operator
{
public void <init>(int, org.springframework.expression.spel.ast.SpelNodeImpl[]);
descriptor: (I[Lorg/springframework/expression/spel/ast/SpelNodeImpl;)V
flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
ldc "+"
iload 1
aload 2
invokespecial org.springframework.expression.spel.ast.Operator.<init>:(Ljava/lang/String;I[Lorg/springframework/expression/spel/ast/SpelNodeImpl;)V
1: aload 2
ldc "Operands must not be empty"
invokestatic org.springframework.util.Assert.notEmpty:([Ljava/lang/Object;Ljava/lang/String;)V
2: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/springframework/expression/spel/ast/OpPlus;
0 3 1 pos I
0 3 2 operands [Lorg/springframework/expression/spel/ast/SpelNodeImpl;
MethodParameters:
Name Flags
pos
operands
public org.springframework.expression.TypedValue getValueInternal(org.springframework.expression.spel.ExpressionState);
descriptor: (Lorg/springframework/expression/spel/ExpressionState;)Lorg/springframework/expression/TypedValue;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=11, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.springframework.expression.spel.ast.OpPlus.getLeftOperand:()Lorg/springframework/expression/spel/ast/SpelNodeImpl;
astore 2
start local 2 1: aload 0
getfield org.springframework.expression.spel.ast.OpPlus.children:[Lorg/springframework/expression/spel/ast/SpelNodeImpl;
arraylength
iconst_2
if_icmpge 17
2: aload 2
aload 1
invokevirtual org.springframework.expression.spel.ast.SpelNodeImpl.getValueInternal:(Lorg/springframework/expression/spel/ExpressionState;)Lorg/springframework/expression/TypedValue;
invokevirtual org.springframework.expression.TypedValue.getValue:()Ljava/lang/Object;
astore 3
start local 3 3: aload 3
instanceof java.lang.Number
ifeq 16
4: aload 3
instanceof java.lang.Double
ifeq 7
5: aload 0
ldc "D"
putfield org.springframework.expression.spel.ast.OpPlus.exitTypeDescriptor:Ljava/lang/String;
6: goto 15
7: StackMap locals: org.springframework.expression.spel.ast.SpelNodeImpl java.lang.Object
StackMap stack:
aload 3
instanceof java.lang.Float
ifeq 10
8: aload 0
ldc "F"
putfield org.springframework.expression.spel.ast.OpPlus.exitTypeDescriptor:Ljava/lang/String;
9: goto 15
10: StackMap locals:
StackMap stack:
aload 3
instanceof java.lang.Long
ifeq 13
11: aload 0
ldc "J"
putfield org.springframework.expression.spel.ast.OpPlus.exitTypeDescriptor:Ljava/lang/String;
12: goto 15
13: StackMap locals:
StackMap stack:
aload 3
instanceof java.lang.Integer
ifeq 15
14: aload 0
ldc "I"
putfield org.springframework.expression.spel.ast.OpPlus.exitTypeDescriptor:Ljava/lang/String;
15: StackMap locals:
StackMap stack:
new org.springframework.expression.TypedValue
dup
aload 3
invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
areturn
16: StackMap locals:
StackMap stack:
aload 1
getstatic org.springframework.expression.Operation.ADD:Lorg/springframework/expression/Operation;
aload 3
aconst_null
invokevirtual org.springframework.expression.spel.ExpressionState.operate:(Lorg/springframework/expression/Operation;Ljava/lang/Object;Ljava/lang/Object;)Lorg/springframework/expression/TypedValue;
areturn
end local 3 17: StackMap locals:
StackMap stack:
aload 2
aload 1
invokevirtual org.springframework.expression.spel.ast.SpelNodeImpl.getValueInternal:(Lorg/springframework/expression/spel/ExpressionState;)Lorg/springframework/expression/TypedValue;
astore 3
start local 3 18: aload 3
invokevirtual org.springframework.expression.TypedValue.getValue:()Ljava/lang/Object;
astore 4
start local 4 19: aload 0
invokevirtual org.springframework.expression.spel.ast.OpPlus.getRightOperand:()Lorg/springframework/expression/spel/ast/SpelNodeImpl;
aload 1
invokevirtual org.springframework.expression.spel.ast.SpelNodeImpl.getValueInternal:(Lorg/springframework/expression/spel/ExpressionState;)Lorg/springframework/expression/TypedValue;
astore 5
start local 5 20: aload 5
invokevirtual org.springframework.expression.TypedValue.getValue:()Ljava/lang/Object;
astore 6
start local 6 21: aload 4
instanceof java.lang.Number
ifeq 45
aload 6
instanceof java.lang.Number
ifeq 45
22: aload 4
checkcast java.lang.Number
astore 7
start local 7 23: aload 6
checkcast java.lang.Number
astore 8
start local 8 24: aload 7
instanceof java.math.BigDecimal
ifne 25
aload 8
instanceof java.math.BigDecimal
ifeq 28
25: StackMap locals: org.springframework.expression.spel.ast.OpPlus org.springframework.expression.spel.ExpressionState org.springframework.expression.spel.ast.SpelNodeImpl org.springframework.expression.TypedValue java.lang.Object org.springframework.expression.TypedValue java.lang.Object java.lang.Number java.lang.Number
StackMap stack:
aload 7
ldc Ljava/math/BigDecimal;
invokestatic org.springframework.util.NumberUtils.convertNumberToTargetClass:(Ljava/lang/Number;Ljava/lang/Class;)Ljava/lang/Number;
checkcast java.math.BigDecimal
astore 9
start local 9 26: aload 8
ldc Ljava/math/BigDecimal;
invokestatic org.springframework.util.NumberUtils.convertNumberToTargetClass:(Ljava/lang/Number;Ljava/lang/Class;)Ljava/lang/Number;
checkcast java.math.BigDecimal
astore 10
start local 10 27: new org.springframework.expression.TypedValue
dup
aload 9
aload 10
invokevirtual java.math.BigDecimal.add:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
areturn
end local 10 end local 9 28: StackMap locals:
StackMap stack:
aload 7
instanceof java.lang.Double
ifne 29
aload 8
instanceof java.lang.Double
ifeq 31
29: StackMap locals:
StackMap stack:
aload 0
ldc "D"
putfield org.springframework.expression.spel.ast.OpPlus.exitTypeDescriptor:Ljava/lang/String;
30: new org.springframework.expression.TypedValue
dup
aload 7
invokevirtual java.lang.Number.doubleValue:()D
aload 8
invokevirtual java.lang.Number.doubleValue:()D
dadd
invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
areturn
31: StackMap locals:
StackMap stack:
aload 7
instanceof java.lang.Float
ifne 32
aload 8
instanceof java.lang.Float
ifeq 34
32: StackMap locals:
StackMap stack:
aload 0
ldc "F"
putfield org.springframework.expression.spel.ast.OpPlus.exitTypeDescriptor:Ljava/lang/String;
33: new org.springframework.expression.TypedValue
dup
aload 7
invokevirtual java.lang.Number.floatValue:()F
aload 8
invokevirtual java.lang.Number.floatValue:()F
fadd
invokestatic java.lang.Float.valueOf:(F)Ljava/lang/Float;
invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
areturn
34: StackMap locals:
StackMap stack:
aload 7
instanceof java.math.BigInteger
ifne 35
aload 8
instanceof java.math.BigInteger
ifeq 38
35: StackMap locals:
StackMap stack:
aload 7
ldc Ljava/math/BigInteger;
invokestatic org.springframework.util.NumberUtils.convertNumberToTargetClass:(Ljava/lang/Number;Ljava/lang/Class;)Ljava/lang/Number;
checkcast java.math.BigInteger
astore 9
start local 9 36: aload 8
ldc Ljava/math/BigInteger;
invokestatic org.springframework.util.NumberUtils.convertNumberToTargetClass:(Ljava/lang/Number;Ljava/lang/Class;)Ljava/lang/Number;
checkcast java.math.BigInteger
astore 10
start local 10 37: new org.springframework.expression.TypedValue
dup
aload 9
aload 10
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
areturn
end local 10 end local 9 38: StackMap locals:
StackMap stack:
aload 7
instanceof java.lang.Long
ifne 39
aload 8
instanceof java.lang.Long
ifeq 41
39: StackMap locals:
StackMap stack:
aload 0
ldc "J"
putfield org.springframework.expression.spel.ast.OpPlus.exitTypeDescriptor:Ljava/lang/String;
40: new org.springframework.expression.TypedValue
dup
aload 7
invokevirtual java.lang.Number.longValue:()J
aload 8
invokevirtual java.lang.Number.longValue:()J
ladd
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
areturn
41: StackMap locals:
StackMap stack:
aload 7
invokestatic org.springframework.expression.spel.CodeFlow.isIntegerForNumericOp:(Ljava/lang/Number;)Z
ifne 42
aload 8
invokestatic org.springframework.expression.spel.CodeFlow.isIntegerForNumericOp:(Ljava/lang/Number;)Z
ifeq 44
42: StackMap locals:
StackMap stack:
aload 0
ldc "I"
putfield org.springframework.expression.spel.ast.OpPlus.exitTypeDescriptor:Ljava/lang/String;
43: new org.springframework.expression.TypedValue
dup
aload 7
invokevirtual java.lang.Number.intValue:()I
aload 8
invokevirtual java.lang.Number.intValue:()I
iadd
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
areturn
44: StackMap locals:
StackMap stack:
new org.springframework.expression.TypedValue
dup
aload 7
invokevirtual java.lang.Number.doubleValue:()D
aload 8
invokevirtual java.lang.Number.doubleValue:()D
dadd
invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
areturn
end local 8 end local 7 45: StackMap locals:
StackMap stack:
aload 4
instanceof java.lang.String
ifeq 48
aload 6
instanceof java.lang.String
ifeq 48
46: aload 0
ldc "Ljava/lang/String"
putfield org.springframework.expression.spel.ast.OpPlus.exitTypeDescriptor:Ljava/lang/String;
47: new org.springframework.expression.TypedValue
dup
new java.lang.StringBuilder
dup
aload 4
checkcast java.lang.String
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
areturn
48: StackMap locals:
StackMap stack:
aload 4
instanceof java.lang.String
ifeq 54
49: new org.springframework.expression.TypedValue
dup
50: new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
aload 6
ifnonnull 51
ldc "null"
goto 52
StackMap locals: org.springframework.expression.spel.ast.OpPlus org.springframework.expression.spel.ExpressionState org.springframework.expression.spel.ast.SpelNodeImpl org.springframework.expression.TypedValue java.lang.Object org.springframework.expression.TypedValue java.lang.Object
StackMap stack: new 49 new 49 java.lang.StringBuilder
51: aload 5
aload 1
invokestatic org.springframework.expression.spel.ast.OpPlus.convertTypedValueToString:(Lorg/springframework/expression/TypedValue;Lorg/springframework/expression/spel/ExpressionState;)Ljava/lang/String;
StackMap locals: org.springframework.expression.spel.ast.OpPlus org.springframework.expression.spel.ExpressionState org.springframework.expression.spel.ast.SpelNodeImpl org.springframework.expression.TypedValue java.lang.Object org.springframework.expression.TypedValue java.lang.Object
StackMap stack: new 49 new 49 java.lang.StringBuilder java.lang.String
52: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
53: invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
areturn
54: StackMap locals:
StackMap stack:
aload 6
instanceof java.lang.String
ifeq 60
55: new org.springframework.expression.TypedValue
dup
56: new java.lang.StringBuilder
dup
aload 4
ifnonnull 57
ldc "null"
goto 58
StackMap locals: org.springframework.expression.spel.ast.OpPlus org.springframework.expression.spel.ExpressionState org.springframework.expression.spel.ast.SpelNodeImpl org.springframework.expression.TypedValue java.lang.Object org.springframework.expression.TypedValue java.lang.Object
StackMap stack: new 55 new 55 new 56 new 56
57: aload 3
aload 1
invokestatic org.springframework.expression.spel.ast.OpPlus.convertTypedValueToString:(Lorg/springframework/expression/TypedValue;Lorg/springframework/expression/spel/ExpressionState;)Ljava/lang/String;
StackMap locals: org.springframework.expression.spel.ast.OpPlus org.springframework.expression.spel.ExpressionState org.springframework.expression.spel.ast.SpelNodeImpl org.springframework.expression.TypedValue java.lang.Object org.springframework.expression.TypedValue java.lang.Object
StackMap stack: new 55 new 55 new 56 new 56 java.lang.String
58: invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
59: invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
areturn
60: StackMap locals:
StackMap stack:
aload 1
getstatic org.springframework.expression.Operation.ADD:Lorg/springframework/expression/Operation;
aload 4
aload 6
invokevirtual org.springframework.expression.spel.ExpressionState.operate:(Lorg/springframework/expression/Operation;Ljava/lang/Object;Ljava/lang/Object;)Lorg/springframework/expression/TypedValue;
areturn
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 61 0 this Lorg/springframework/expression/spel/ast/OpPlus;
0 61 1 state Lorg/springframework/expression/spel/ExpressionState;
1 61 2 leftOp Lorg/springframework/expression/spel/ast/SpelNodeImpl;
3 17 3 operandOne Ljava/lang/Object;
18 61 3 operandOneValue Lorg/springframework/expression/TypedValue;
19 61 4 leftOperand Ljava/lang/Object;
20 61 5 operandTwoValue Lorg/springframework/expression/TypedValue;
21 61 6 rightOperand Ljava/lang/Object;
23 45 7 leftNumber Ljava/lang/Number;
24 45 8 rightNumber Ljava/lang/Number;
26 28 9 leftBigDecimal Ljava/math/BigDecimal;
27 28 10 rightBigDecimal Ljava/math/BigDecimal;
36 38 9 leftBigInteger Ljava/math/BigInteger;
37 38 10 rightBigInteger Ljava/math/BigInteger;
Exceptions:
throws org.springframework.expression.EvaluationException
MethodParameters:
Name Flags
state
public java.lang.String toStringAST();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield org.springframework.expression.spel.ast.OpPlus.children:[Lorg/springframework/expression/spel/ast/SpelNodeImpl;
arraylength
iconst_2
if_icmpge 2
1: new java.lang.StringBuilder
dup
ldc "+"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual org.springframework.expression.spel.ast.OpPlus.getLeftOperand:()Lorg/springframework/expression/spel/ast/SpelNodeImpl;
invokevirtual org.springframework.expression.spel.ast.SpelNodeImpl.toStringAST:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
2: StackMap locals:
StackMap stack:
aload 0
invokespecial org.springframework.expression.spel.ast.Operator.toStringAST:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/springframework/expression/spel/ast/OpPlus;
public org.springframework.expression.spel.ast.SpelNodeImpl getRightOperand();
descriptor: ()Lorg/springframework/expression/spel/ast/SpelNodeImpl;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield org.springframework.expression.spel.ast.OpPlus.children:[Lorg/springframework/expression/spel/ast/SpelNodeImpl;
arraylength
iconst_2
if_icmpge 2
1: new java.lang.IllegalStateException
dup
ldc "No right operand"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield org.springframework.expression.spel.ast.OpPlus.children:[Lorg/springframework/expression/spel/ast/SpelNodeImpl;
iconst_1
aaload
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/springframework/expression/spel/ast/OpPlus;
private static java.lang.String convertTypedValueToString(org.springframework.expression.TypedValue, org.springframework.expression.spel.ExpressionState);
descriptor: (Lorg/springframework/expression/TypedValue;Lorg/springframework/expression/spel/ExpressionState;)Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.springframework.expression.spel.ExpressionState.getEvaluationContext:()Lorg/springframework/expression/EvaluationContext;
invokeinterface org.springframework.expression.EvaluationContext.getTypeConverter:()Lorg/springframework/expression/TypeConverter;
astore 2
start local 2 1: ldc Ljava/lang/String;
invokestatic org.springframework.core.convert.TypeDescriptor.valueOf:(Ljava/lang/Class;)Lorg/springframework/core/convert/TypeDescriptor;
astore 3
start local 3 2: aload 2
aload 0
invokevirtual org.springframework.expression.TypedValue.getTypeDescriptor:()Lorg/springframework/core/convert/TypeDescriptor;
aload 3
invokeinterface org.springframework.expression.TypeConverter.canConvert:(Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Z
ifeq 6
3: aload 2
aload 0
invokevirtual org.springframework.expression.TypedValue.getValue:()Ljava/lang/Object;
4: aload 0
invokevirtual org.springframework.expression.TypedValue.getTypeDescriptor:()Lorg/springframework/core/convert/TypeDescriptor;
aload 3
5: invokeinterface org.springframework.expression.TypeConverter.convertValue:(Ljava/lang/Object;Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Ljava/lang/Object;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
areturn
6: StackMap locals: org.springframework.expression.TypeConverter org.springframework.core.convert.TypeDescriptor
StackMap stack:
aload 0
invokevirtual org.springframework.expression.TypedValue.getValue:()Ljava/lang/Object;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 value Lorg/springframework/expression/TypedValue;
0 7 1 state Lorg/springframework/expression/spel/ExpressionState;
1 7 2 typeConverter Lorg/springframework/expression/TypeConverter;
2 7 3 typeDescriptor Lorg/springframework/core/convert/TypeDescriptor;
MethodParameters:
Name Flags
value
state
public boolean isCompilable();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.springframework.expression.spel.ast.OpPlus.getLeftOperand:()Lorg/springframework/expression/spel/ast/SpelNodeImpl;
invokevirtual org.springframework.expression.spel.ast.SpelNodeImpl.isCompilable:()Z
ifne 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield org.springframework.expression.spel.ast.OpPlus.children:[Lorg/springframework/expression/spel/ast/SpelNodeImpl;
arraylength
iconst_1
if_icmple 5
3: aload 0
invokevirtual org.springframework.expression.spel.ast.OpPlus.getRightOperand:()Lorg/springframework/expression/spel/ast/SpelNodeImpl;
invokevirtual org.springframework.expression.spel.ast.SpelNodeImpl.isCompilable:()Z
ifne 5
4: iconst_0
ireturn
5: StackMap locals:
StackMap stack:
aload 0
getfield org.springframework.expression.spel.ast.OpPlus.exitTypeDescriptor:Ljava/lang/String;
ifnull 6
iconst_1
ireturn
StackMap locals:
StackMap stack:
6: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/springframework/expression/spel/ast/OpPlus;
private void walk(org.springframework.asm.MethodVisitor, org.springframework.expression.spel.CodeFlow, org.springframework.expression.spel.ast.SpelNodeImpl);
descriptor: (Lorg/springframework/asm/MethodVisitor;Lorg/springframework/expression/spel/CodeFlow;Lorg/springframework/expression/spel/ast/SpelNodeImpl;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 3
instanceof org.springframework.expression.spel.ast.OpPlus
ifeq 5
1: aload 3
checkcast org.springframework.expression.spel.ast.OpPlus
astore 4
start local 4 2: aload 0
aload 1
aload 2
aload 4
invokevirtual org.springframework.expression.spel.ast.OpPlus.getLeftOperand:()Lorg/springframework/expression/spel/ast/SpelNodeImpl;
invokevirtual org.springframework.expression.spel.ast.OpPlus.walk:(Lorg/springframework/asm/MethodVisitor;Lorg/springframework/expression/spel/CodeFlow;Lorg/springframework/expression/spel/ast/SpelNodeImpl;)V
3: aload 0
aload 1
aload 2
aload 4
invokevirtual org.springframework.expression.spel.ast.OpPlus.getRightOperand:()Lorg/springframework/expression/spel/ast/SpelNodeImpl;
invokevirtual org.springframework.expression.spel.ast.OpPlus.walk:(Lorg/springframework/asm/MethodVisitor;Lorg/springframework/expression/spel/CodeFlow;Lorg/springframework/expression/spel/ast/SpelNodeImpl;)V
end local 4 4: goto 12
5: StackMap locals:
StackMap stack:
aload 3
ifnull 12
6: aload 2
invokevirtual org.springframework.expression.spel.CodeFlow.enterCompilationScope:()V
7: aload 3
aload 1
aload 2
invokevirtual org.springframework.expression.spel.ast.SpelNodeImpl.generateCode:(Lorg/springframework/asm/MethodVisitor;Lorg/springframework/expression/spel/CodeFlow;)V
8: ldc "Ljava/lang/String"
aload 2
invokevirtual org.springframework.expression.spel.CodeFlow.lastDescriptor:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 10
9: aload 1
sipush 192
ldc "java/lang/String"
invokevirtual org.springframework.asm.MethodVisitor.visitTypeInsn:(ILjava/lang/String;)V
10: StackMap locals:
StackMap stack:
aload 2
invokevirtual org.springframework.expression.spel.CodeFlow.exitCompilationScope:()V
11: aload 1
sipush 182
ldc "java/lang/StringBuilder"
ldc "append"
ldc "(Ljava/lang/String;)Ljava/lang/StringBuilder;"
iconst_0
invokevirtual org.springframework.asm.MethodVisitor.visitMethodInsn:(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
12: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lorg/springframework/expression/spel/ast/OpPlus;
0 13 1 mv Lorg/springframework/asm/MethodVisitor;
0 13 2 cf Lorg/springframework/expression/spel/CodeFlow;
0 13 3 operand Lorg/springframework/expression/spel/ast/SpelNodeImpl;
2 4 4 plus Lorg/springframework/expression/spel/ast/OpPlus;
RuntimeVisibleParameterAnnotations:
0:
1:
2:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
mv
cf
operand
public void generateCode(org.springframework.asm.MethodVisitor, org.springframework.expression.spel.CodeFlow);
descriptor: (Lorg/springframework/asm/MethodVisitor;Lorg/springframework/expression/spel/CodeFlow;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=7, args_size=3
start local 0 start local 1 start local 2 0: ldc "Ljava/lang/String"
aload 0
getfield org.springframework.expression.spel.ast.OpPlus.exitTypeDescriptor:Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 8
1: aload 1
sipush 187
ldc "java/lang/StringBuilder"
invokevirtual org.springframework.asm.MethodVisitor.visitTypeInsn:(ILjava/lang/String;)V
2: aload 1
bipush 89
invokevirtual org.springframework.asm.MethodVisitor.visitInsn:(I)V
3: aload 1
sipush 183
ldc "java/lang/StringBuilder"
ldc "<init>"
ldc "()V"
iconst_0
invokevirtual org.springframework.asm.MethodVisitor.visitMethodInsn:(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
4: aload 0
aload 1
aload 2
aload 0
invokevirtual org.springframework.expression.spel.ast.OpPlus.getLeftOperand:()Lorg/springframework/expression/spel/ast/SpelNodeImpl;
invokevirtual org.springframework.expression.spel.ast.OpPlus.walk:(Lorg/springframework/asm/MethodVisitor;Lorg/springframework/expression/spel/CodeFlow;Lorg/springframework/expression/spel/ast/SpelNodeImpl;)V
5: aload 0
aload 1
aload 2
aload 0
invokevirtual org.springframework.expression.spel.ast.OpPlus.getRightOperand:()Lorg/springframework/expression/spel/ast/SpelNodeImpl;
invokevirtual org.springframework.expression.spel.ast.OpPlus.walk:(Lorg/springframework/asm/MethodVisitor;Lorg/springframework/expression/spel/CodeFlow;Lorg/springframework/expression/spel/ast/SpelNodeImpl;)V
6: aload 1
sipush 182
ldc "java/lang/StringBuilder"
ldc "toString"
ldc "()Ljava/lang/String;"
iconst_0
invokevirtual org.springframework.asm.MethodVisitor.visitMethodInsn:(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
7: goto 34
8: StackMap locals:
StackMap stack:
aload 0
getfield org.springframework.expression.spel.ast.OpPlus.children:[Lorg/springframework/expression/spel/ast/SpelNodeImpl;
iconst_0
aaload
aload 1
aload 2
invokevirtual org.springframework.expression.spel.ast.SpelNodeImpl.generateCode:(Lorg/springframework/asm/MethodVisitor;Lorg/springframework/expression/spel/CodeFlow;)V
9: aload 0
getfield org.springframework.expression.spel.ast.OpPlus.children:[Lorg/springframework/expression/spel/ast/SpelNodeImpl;
iconst_0
aaload
getfield org.springframework.expression.spel.ast.SpelNodeImpl.exitTypeDescriptor:Ljava/lang/String;
astore 3
start local 3 10: aload 0
getfield org.springframework.expression.spel.ast.OpPlus.exitTypeDescriptor:Ljava/lang/String;
astore 4
start local 4 11: aload 4
ifnull 12
iconst_1
goto 13
StackMap locals: java.lang.String java.lang.String
StackMap stack:
12: iconst_0
StackMap locals:
StackMap stack: int
13: ldc "No exit type descriptor"
invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
14: aload 4
iconst_0
invokevirtual java.lang.String.charAt:(I)C
istore 5
start local 5 15: aload 1
aload 3
iload 5
invokestatic org.springframework.expression.spel.CodeFlow.insertNumericUnboxOrPrimitiveTypeCoercion:(Lorg/springframework/asm/MethodVisitor;Ljava/lang/String;C)V
16: aload 0
getfield org.springframework.expression.spel.ast.OpPlus.children:[Lorg/springframework/expression/spel/ast/SpelNodeImpl;
arraylength
iconst_1
if_icmple 34
17: aload 2
invokevirtual org.springframework.expression.spel.CodeFlow.enterCompilationScope:()V
18: aload 0
getfield org.springframework.expression.spel.ast.OpPlus.children:[Lorg/springframework/expression/spel/ast/SpelNodeImpl;
iconst_1
aaload
aload 1
aload 2
invokevirtual org.springframework.expression.spel.ast.SpelNodeImpl.generateCode:(Lorg/springframework/asm/MethodVisitor;Lorg/springframework/expression/spel/CodeFlow;)V
19: aload 0
getfield org.springframework.expression.spel.ast.OpPlus.children:[Lorg/springframework/expression/spel/ast/SpelNodeImpl;
iconst_1
aaload
getfield org.springframework.expression.spel.ast.SpelNodeImpl.exitTypeDescriptor:Ljava/lang/String;
astore 6
start local 6 20: aload 2
invokevirtual org.springframework.expression.spel.CodeFlow.exitCompilationScope:()V
21: aload 1
aload 6
iload 5
invokestatic org.springframework.expression.spel.CodeFlow.insertNumericUnboxOrPrimitiveTypeCoercion:(Lorg/springframework/asm/MethodVisitor;Ljava/lang/String;C)V
22: iload 5
tableswitch { // 68 - 74
68: 29
69: 31
70: 27
71: 31
72: 31
73: 23
74: 25
default: 31
}
23: StackMap locals: int java.lang.String
StackMap stack:
aload 1
bipush 96
invokevirtual org.springframework.asm.MethodVisitor.visitInsn:(I)V
24: goto 34
25: StackMap locals:
StackMap stack:
aload 1
bipush 97
invokevirtual org.springframework.asm.MethodVisitor.visitInsn:(I)V
26: goto 34
27: StackMap locals:
StackMap stack:
aload 1
bipush 98
invokevirtual org.springframework.asm.MethodVisitor.visitInsn:(I)V
28: goto 34
29: StackMap locals:
StackMap stack:
aload 1
bipush 99
invokevirtual org.springframework.asm.MethodVisitor.visitInsn:(I)V
30: goto 34
31: StackMap locals:
StackMap stack:
new java.lang.IllegalStateException
dup
32: new java.lang.StringBuilder
dup
ldc "Unrecognized exit type descriptor: '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield org.springframework.expression.spel.ast.OpPlus.exitTypeDescriptor:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "'"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
33: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
end local 6 end local 5 end local 4 end local 3 34: StackMap locals: org.springframework.expression.spel.ast.OpPlus org.springframework.asm.MethodVisitor org.springframework.expression.spel.CodeFlow
StackMap stack:
aload 2
aload 0
getfield org.springframework.expression.spel.ast.OpPlus.exitTypeDescriptor:Ljava/lang/String;
invokevirtual org.springframework.expression.spel.CodeFlow.pushDescriptor:(Ljava/lang/String;)V
35: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 36 0 this Lorg/springframework/expression/spel/ast/OpPlus;
0 36 1 mv Lorg/springframework/asm/MethodVisitor;
0 36 2 cf Lorg/springframework/expression/spel/CodeFlow;
10 34 3 leftDesc Ljava/lang/String;
11 34 4 exitDesc Ljava/lang/String;
15 34 5 targetDesc C
20 34 6 rightDesc Ljava/lang/String;
MethodParameters:
Name Flags
mv
cf
}
SourceFile: "OpPlus.java"