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 2022/10/09 23:41:35 UTC
[groovy] branch GROOVY_2_5_X updated: GROOVY-10775: compute frames for stack map
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 921927e6b8 GROOVY-10775: compute frames for stack map
921927e6b8 is described below
commit 921927e6b8ff28208cc3f88d0317c22a0b45d91a
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Sun Oct 9 18:26:26 2022 -0500
GROOVY-10775: compute frames for stack map
---
.../codehaus/groovy/control/CompilationUnit.java | 28 ++++++++++++----------
.../groovy/runtime/callsite/CallSiteGenerator.java | 6 +----
2 files changed, 16 insertions(+), 18 deletions(-)
diff --git a/src/main/java/org/codehaus/groovy/control/CompilationUnit.java b/src/main/java/org/codehaus/groovy/control/CompilationUnit.java
index 935c9b997e..7500ab1615 100644
--- a/src/main/java/org/codehaus/groovy/control/CompilationUnit.java
+++ b/src/main/java/org/codehaus/groovy/control/CompilationUnit.java
@@ -66,6 +66,8 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import static org.codehaus.groovy.runtime.StringGroovyMethods.isAtLeast;
+
/**
* The CompilationUnit collects all compilation data as it is generated by the compiler system.
* You can use this object to add additional source units to the compilation, or force the
@@ -852,37 +854,37 @@ public class CompilationUnit extends ProcessingUnit {
protected ClassVisitor createClassVisitor() {
CompilerConfiguration config = getConfiguration();
int computeMaxStackAndFrames = ClassWriter.COMPUTE_MAXS;
- if (CompilerConfiguration.isPostJDK7(config.getTargetBytecode()) || config.isIndyEnabled()) {
- computeMaxStackAndFrames += ClassWriter.COMPUTE_FRAMES;
+ if (config.isIndyEnabled() || isAtLeast(config.getTargetBytecode(), CompilerConfiguration.JDK6)) {
+ computeMaxStackAndFrames = ClassWriter.COMPUTE_FRAMES;
}
return new ClassWriter(computeMaxStackAndFrames) {
private ClassNode getClassNode(String name) {
// try classes under compilation
CompileUnit cu = getAST();
ClassNode cn = cu.getClass(name);
- if (cn!=null) return cn;
+ if (cn != null) return cn;
// try inner classes
cn = cu.getGeneratedInnerClass(name);
- if (cn!=null) return cn;
+ if (cn != null) return cn;
ClassNodeResolver.LookupResult lookupResult = getClassNodeResolver().resolveName(name, CompilationUnit.this);
return lookupResult == null ? null : lookupResult.getClassNode();
}
- private ClassNode getCommonSuperClassNode(ClassNode c, ClassNode d) {
+ private ClassNode getCommonSuperClassNode(ClassNode a, ClassNode b) {
// adapted from ClassWriter code
- if (c.isDerivedFrom(d)) return d;
- if (d.isDerivedFrom(c)) return c;
- if (c.isInterface() || d.isInterface()) return ClassHelper.OBJECT_TYPE;
+ if (a.isDerivedFrom(b)) return b;
+ if (b.isDerivedFrom(a)) return a;
+ if (a.isInterface() || b.isInterface()) return ClassHelper.OBJECT_TYPE;
do {
- c = c.getSuperClass();
- } while (c!=null && !d.isDerivedFrom(c));
- if (c==null) return ClassHelper.OBJECT_TYPE;
- return c;
+ a = a.getSuperClass();
+ } while (a != null && !b.isDerivedFrom(a));
+ if (a == null) return ClassHelper.OBJECT_TYPE;
+ return a;
}
@Override
protected String getCommonSuperClass(String arg1, String arg2) {
ClassNode a = getClassNode(arg1.replace('/', '.'));
ClassNode b = getClassNode(arg2.replace('/', '.'));
- return getCommonSuperClassNode(a,b).getName().replace('.','/');
+ return getCommonSuperClassNode(a, b).getName().replace('.', '/');
}
};
}
diff --git a/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteGenerator.java b/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteGenerator.java
index 8931d19599..3cf9c11665 100644
--- a/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteGenerator.java
+++ b/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteGenerator.java
@@ -219,11 +219,7 @@ public class CallSiteGenerator {
}
private static ClassWriter makeClassWriter() {
- if (VMPluginFactory.getPlugin().getVersion()>=8) {
- return new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
- } else {
- return new ClassWriter(ClassWriter.COMPUTE_MAXS);
- }
+ return new ClassWriter(VMPluginFactory.getPlugin().getVersion() >= 6 ? ClassWriter.COMPUTE_FRAMES : ClassWriter.COMPUTE_MAXS);
}
public static Constructor compilePogoMethod(CachedMethod cachedMethod) {