From c8090fe0b451c1b13889808e4cc47d2d6f420ea4 Mon Sep 17 00:00:00 2001 From: Sam Brannen <104798+sbrannen@users.noreply.github.com> Date: Fri, 19 Apr 2024 14:33:22 +0200 Subject: [PATCH] Extract generateIndexCode() in SpEL's Indexer --- .../expression/spel/ast/Indexer.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java b/spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java index 16be5d19ad..42bb03b20f 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java @@ -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() + "]";