You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2021/11/27 15:27:10 UTC

[groovy] branch danielsun/bump-bytecode-version created (now 0dde6f6)

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

sunlan pushed a change to branch danielsun/bump-bytecode-version
in repository https://gitbox.apache.org/repos/asf/groovy.git.


      at 0dde6f6  Bump bytecode version to 1.8

This branch includes the following new commits:

     new 0dde6f6  Bump bytecode version to 1.8

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[groovy] 01/01: Bump bytecode version to 1.8

Posted by su...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a commit to branch danielsun/bump-bytecode-version
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 0dde6f62c86b707c4f86a0016a214e3e701dbe8d
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sat Nov 27 23:26:31 2021 +0800

    Bump bytecode version to 1.8
---
 .../java/org/codehaus/groovy/classgen/DummyClassGenerator.java    | 4 ++--
 .../java/org/codehaus/groovy/classgen/asm/WriterController.java   | 4 ++--
 src/main/java/org/codehaus/groovy/reflection/SunClassLoader.java  | 8 ++++----
 .../java/org/codehaus/groovy/runtime/ProxyGeneratorAdapter.java   | 8 ++++----
 src/main/java/org/codehaus/groovy/tools/DgmConverter.java         | 6 +++---
 5 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/classgen/DummyClassGenerator.java b/src/main/java/org/codehaus/groovy/classgen/DummyClassGenerator.java
index ba1a22e..c8a4b17 100644
--- a/src/main/java/org/codehaus/groovy/classgen/DummyClassGenerator.java
+++ b/src/main/java/org/codehaus/groovy/classgen/DummyClassGenerator.java
@@ -37,7 +37,7 @@ import static org.objectweb.asm.Opcodes.ATHROW;
 import static org.objectweb.asm.Opcodes.DUP;
 import static org.objectweb.asm.Opcodes.INVOKESPECIAL;
 import static org.objectweb.asm.Opcodes.NEW;
-import static org.objectweb.asm.Opcodes.V1_3;
+import static org.objectweb.asm.Opcodes.V1_8;
 
 /**
  * To generate a class that has all the fields and methods, except that fields are not initialized
@@ -78,7 +78,7 @@ public class DummyClassGenerator extends ClassGenerator {
             this.internalBaseClassName = BytecodeHelper.getClassInternalName(classNode.getSuperClass());
 
             cv.visit(
-                    V1_3,
+                    V1_8,
                     classNode.getModifiers(),
                     internalClassName,
                     null,
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/WriterController.java b/src/main/java/org/codehaus/groovy/classgen/asm/WriterController.java
index a266571..369035e 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/WriterController.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/WriterController.java
@@ -147,8 +147,8 @@ public class WriterController {
             throw new GroovyBugError("Bytecode version [" + targetBytecode + "] is not supported by the compiler");
         }
 
-        if (invokedynamic && bytecodeVersion <= Opcodes.V1_7) {
-            return Opcodes.V1_7; // invokedynamic added here
+        if (invokedynamic && bytecodeVersion <= Opcodes.V1_8) {
+            return Opcodes.V1_8; // invokedynamic added here
         } else if (previewFeatures) {
             return bytecodeVersion | Opcodes.V_PREVIEW;
         } else {
diff --git a/src/main/java/org/codehaus/groovy/reflection/SunClassLoader.java b/src/main/java/org/codehaus/groovy/reflection/SunClassLoader.java
index 8db79c1..6a97025 100644
--- a/src/main/java/org/codehaus/groovy/reflection/SunClassLoader.java
+++ b/src/main/java/org/codehaus/groovy/reflection/SunClassLoader.java
@@ -33,7 +33,7 @@ import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
 import static org.objectweb.asm.Opcodes.ALOAD;
 import static org.objectweb.asm.Opcodes.INVOKESPECIAL;
 import static org.objectweb.asm.Opcodes.RETURN;
-import static org.objectweb.asm.Opcodes.V1_4;
+import static org.objectweb.asm.Opcodes.V1_8;
 
 /**
  * Special class loader, which when running on Sun VM allows to generate accessor classes for any method
@@ -68,8 +68,8 @@ public class SunClassLoader extends ClassLoader {
     }
 
     private void loadMagic() {
-        ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
-        cw.visit(V1_4, ACC_PUBLIC, "sun/reflect/GroovyMagic", null, "sun/reflect/MagicAccessorImpl", null);
+        ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
+        cw.visit(V1_8, ACC_PUBLIC, "sun/reflect/GroovyMagic", null, "sun/reflect/MagicAccessorImpl", null);
         MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
         mv.visitCode();
         mv.visitVarInsn(ALOAD, 0);
@@ -85,7 +85,7 @@ public class SunClassLoader extends ClassLoader {
     protected void loadFromRes(String name) throws IOException {
         try (final InputStream asStream = SunClassLoader.class.getClassLoader().getResourceAsStream(resName(name))) {
             ClassReader reader = new ClassReader(asStream);
-            final ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
+            final ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
             reader.accept(cw, ClassReader.SKIP_DEBUG);
             define(cw.toByteArray(), name);
         }
diff --git a/src/main/java/org/codehaus/groovy/runtime/ProxyGeneratorAdapter.java b/src/main/java/org/codehaus/groovy/runtime/ProxyGeneratorAdapter.java
index 6ad943e..37e8a1b 100644
--- a/src/main/java/org/codehaus/groovy/runtime/ProxyGeneratorAdapter.java
+++ b/src/main/java/org/codehaus/groovy/runtime/ProxyGeneratorAdapter.java
@@ -94,7 +94,7 @@ import static org.objectweb.asm.Opcodes.NEW;
 import static org.objectweb.asm.Opcodes.POP;
 import static org.objectweb.asm.Opcodes.PUTFIELD;
 import static org.objectweb.asm.Opcodes.RETURN;
-import static org.objectweb.asm.Opcodes.V1_5;
+import static org.objectweb.asm.Opcodes.V1_8;
 
 /**
  * A proxy generator responsible for mapping a map of closures to a class implementing a list of interfaces. For
@@ -180,7 +180,7 @@ public class ProxyGeneratorAdapter extends ClassVisitor {
             final ClassLoader proxyLoader,
             final boolean emptyBody,
             final Class delegateClass) {
-        super(CompilerConfiguration.ASM_API_VERSION, new ClassWriter(0));
+        super(CompilerConfiguration.ASM_API_VERSION, new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES));
         this.loader = proxyLoader != null ? createInnerLoader(proxyLoader, interfaces) : findClassLoader(superClass, interfaces);
         this.visitedMethods = new LinkedHashSet<Object>();
         this.delegatedClosures = closureMap.isEmpty() ? EMPTY_DELEGATECLOSURE_MAP : new HashMap<String, Boolean>();
@@ -221,7 +221,7 @@ public class ProxyGeneratorAdapter extends ClassVisitor {
 
         // generate bytecode
         ClassWriter writer = (ClassWriter) cv;
-        this.visit(V1_5, ACC_PUBLIC, proxyName, null, null, null);
+        this.visit(V1_8, ACC_PUBLIC, proxyName, null, null, null);
         byte[] b = writer.toByteArray();
 //        CheckClassAdapter.verify(new ClassReader(b), true, new PrintWriter(System.err));
         cachedClass = loader.defineClass(proxyName.replace('/', '.'), b);
@@ -374,7 +374,7 @@ public class ProxyGeneratorAdapter extends ClassVisitor {
             classList.add(GeneratedGroovyProxy.class);
             interfacesSet.add("groovy/lang/GeneratedGroovyProxy");
         }
-        super.visit(V1_5, ACC_PUBLIC, proxyName, signature, BytecodeHelper.getClassInternalName(superClass), interfacesSet.toArray(EMPTY_STRING_ARRAY));
+        super.visit(V1_8, ACC_PUBLIC, proxyName, signature, BytecodeHelper.getClassInternalName(superClass), interfacesSet.toArray(EMPTY_STRING_ARRAY));
         visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
         addDelegateFields();
         if (addGroovyObjectSupport) {
diff --git a/src/main/java/org/codehaus/groovy/tools/DgmConverter.java b/src/main/java/org/codehaus/groovy/tools/DgmConverter.java
index 34a14e4..fec5803 100644
--- a/src/main/java/org/codehaus/groovy/tools/DgmConverter.java
+++ b/src/main/java/org/codehaus/groovy/tools/DgmConverter.java
@@ -52,7 +52,7 @@ import static org.objectweb.asm.Opcodes.INVOKESTATIC;
 import static org.objectweb.asm.Opcodes.INVOKEVIRTUAL;
 import static org.objectweb.asm.Opcodes.IRETURN;
 import static org.objectweb.asm.Opcodes.RETURN;
-import static org.objectweb.asm.Opcodes.V1_3;
+import static org.objectweb.asm.Opcodes.V1_8;
 
 public class DgmConverter {
 
@@ -95,8 +95,8 @@ public class DgmConverter {
             record.parameters = method.getNativeParameterTypes();
             record.className = className;
 
-            ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
-            cw.visit(V1_3, ACC_PUBLIC, className, null, "org/codehaus/groovy/reflection/GeneratedMetaMethod", null);
+            ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
+            cw.visit(V1_8, ACC_PUBLIC, className, null, "org/codehaus/groovy/reflection/GeneratedMetaMethod", null);
 
             createConstructor(cw);