This is an automated email from the ASF dual-hosted git repository.

emilles pushed a commit to branch GROOVY_3_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git


The following commit(s) were added to refs/heads/GROOVY_3_0_X by this push:
     new da664dbe2c GROOVY-10775: compute frames for stack map
da664dbe2c is described below

commit da664dbe2c21e667e583ed20bd5829f7f2501f69
Author: Eric Milles <[email protected]>
AuthorDate: Sun Oct 9 18:26:26 2022 -0500

    GROOVY-10775: compute frames for stack map
---
 .../codehaus/groovy/control/CompilationUnit.java   | 23 +++++++++++-----------
 .../groovy/runtime/callsite/CallSiteGenerator.java |  6 +-----
 2 files changed, 13 insertions(+), 16 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/control/CompilationUnit.java 
b/src/main/java/org/codehaus/groovy/control/CompilationUnit.java
index d719ae0919..39d1882392 100644
--- a/src/main/java/org/codehaus/groovy/control/CompilationUnit.java
+++ b/src/main/java/org/codehaus/groovy/control/CompilationUnit.java
@@ -79,6 +79,7 @@ import java.util.stream.Stream;
 import static java.util.stream.Collectors.toList;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.classX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.propX;
+import static org.codehaus.groovy.runtime.StringGroovyMethods.isAtLeast;
 import static 
org.codehaus.groovy.transform.sc.StaticCompilationMetadataKeys.DYNAMIC_OUTER_NODE_CALLBACK;
 import static 
org.codehaus.groovy.transform.stc.StaticTypesMarker.SWITCH_CONDITION_EXPRESSION_TYPE;
 
@@ -823,8 +824,8 @@ 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) {
@@ -838,22 +839,22 @@ public class CompilationUnit extends ProcessingUnit {
                 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 163b3fc2bc..9d6a5591c8 100644
--- a/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteGenerator.java
+++ b/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteGenerator.java
@@ -209,11 +209,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) {

Reply via email to