Extract generateIndexCode() in SpEL's Indexer
This commit is contained in:
@@ -413,17 +413,13 @@ public class Indexer extends SpelNodeImpl {
|
||||
default -> AALOAD;
|
||||
};
|
||||
|
||||
cf.enterCompilationScope();
|
||||
index.generateCode(mv, cf);
|
||||
cf.exitCompilationScope();
|
||||
generateIndexCode(index, mv, cf);
|
||||
mv.visitInsn(insn);
|
||||
}
|
||||
|
||||
else if (this.indexedType == IndexedType.LIST) {
|
||||
mv.visitTypeInsn(CHECKCAST, "java/util/List");
|
||||
cf.enterCompilationScope();
|
||||
index.generateCode(mv, cf);
|
||||
cf.exitCompilationScope();
|
||||
generateIndexCode(index, mv, cf);
|
||||
mv.visitMethodInsn(INVOKEINTERFACE, "java/util/List", "get", "(I)Ljava/lang/Object;", true);
|
||||
}
|
||||
|
||||
@@ -436,9 +432,7 @@ public class Indexer extends SpelNodeImpl {
|
||||
mv.visitLdcInsn(mapKeyName);
|
||||
}
|
||||
else {
|
||||
cf.enterCompilationScope();
|
||||
index.generateCode(mv, cf);
|
||||
cf.exitCompilationScope();
|
||||
generateIndexCode(index, mv, cf);
|
||||
}
|
||||
mv.visitMethodInsn(
|
||||
INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;", true);
|
||||
@@ -470,6 +464,12 @@ public class Indexer extends SpelNodeImpl {
|
||||
}
|
||||
}
|
||||
|
||||
private void generateIndexCode(SpelNodeImpl index, MethodVisitor mv, CodeFlow cf) {
|
||||
cf.enterCompilationScope();
|
||||
index.generateCode(mv, cf);
|
||||
cf.exitCompilationScope();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toStringAST() {
|
||||
return "[" + getChild(0).toStringAST() + "]";
|
||||
|
||||
Reference in New Issue
Block a user