You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by em...@apache.org on 2020/12/14 19:54:28 UTC
[groovy] branch GROOVY_2_5_X updated: GROOVY-9076: add NOP bytecode
for debugger to support "step into"
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch GROOVY_2_5_X
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/GROOVY_2_5_X by this push:
new dc6dd81 GROOVY-9076: add NOP bytecode for debugger to support "step into"
dc6dd81 is described below
commit dc6dd817483607afd59f0ac1faab8491cce998de
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Mon Dec 14 13:13:49 2020 -0600
GROOVY-9076: add NOP bytecode for debugger to support "step into"
---
.../java/org/codehaus/groovy/classgen/asm/CallSiteWriter.java | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/CallSiteWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/CallSiteWriter.java
index 75d06a0..f5188c3 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/CallSiteWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/CallSiteWriter.java
@@ -59,6 +59,7 @@ import static org.objectweb.asm.Opcodes.INVOKESPECIAL;
import static org.objectweb.asm.Opcodes.INVOKESTATIC;
import static org.objectweb.asm.Opcodes.INVOKEVIRTUAL;
import static org.objectweb.asm.Opcodes.NEW;
+import static org.objectweb.asm.Opcodes.NOP;
import static org.objectweb.asm.Opcodes.PUTSTATIC;
import static org.objectweb.asm.Opcodes.RETURN;
@@ -88,7 +89,7 @@ public class CallSiteWriter {
private static final int
MOD_PRIVSS = ACC_PRIVATE+ACC_STATIC+ACC_SYNTHETIC,
MOD_PUBSS = ACC_PUBLIC+ACC_STATIC+ACC_SYNTHETIC;
- private static final ClassNode CALLSITE_ARRAY_NODE = ClassHelper.make(CallSite[].class);
+ private static final ClassNode CALLSITE_ARRAY_TYPE = ClassHelper.make(CallSite[].class);
private static final String
GET_CALLSITE_METHOD = "$getCallSiteArray",
CALLSITE_CLASS = "org/codehaus/groovy/runtime/callsite/CallSite",
@@ -117,9 +118,11 @@ public class CallSiteWriter {
public void makeSiteEntry() {
if (controller.isNotClinit()) {
- controller.getMethodVisitor().visitMethodInsn(INVOKESTATIC, controller.getInternalClassName(), GET_CALLSITE_METHOD, GET_CALLSITE_DESC, false);
- controller.getOperandStack().push(CALLSITE_ARRAY_NODE);
- callSiteArrayVarIndex = controller.getCompileStack().defineTemporaryVariable("$local$callSiteArray", CALLSITE_ARRAY_NODE, true);
+ MethodVisitor mv = controller.getMethodVisitor();
+ mv.visitInsn(NOP); // GROOVY-9076: need this for debugger to support step into
+ mv.visitMethodInsn(INVOKESTATIC, controller.getInternalClassName(), GET_CALLSITE_METHOD, GET_CALLSITE_DESC, false);
+ controller.getOperandStack().push(CALLSITE_ARRAY_TYPE);
+ callSiteArrayVarIndex = controller.getCompileStack().defineTemporaryVariable("$local$callSiteArray", CALLSITE_ARRAY_TYPE, true);
}
}