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 2017/05/05 17:44:26 UTC

groovy git commit: Minor refactoring

Repository: groovy
Updated Branches:
  refs/heads/master c6e1ad1b6 -> feec95012


Minor refactoring


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/feec9501
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/feec9501
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/feec9501

Branch: refs/heads/master
Commit: feec950127534eee329dafbc3214b333fc9f3a99
Parents: c6e1ad1
Author: sunlan <su...@apache.org>
Authored: Sat May 6 01:44:14 2017 +0800
Committer: sunlan <su...@apache.org>
Committed: Sat May 6 01:44:14 2017 +0800

----------------------------------------------------------------------
 .../groovy/classgen/asm/WriterController.java   | 24 ++++++++------------
 .../groovy/control/CompilerConfiguration.java   | 12 ++++++++++
 2 files changed, 22 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/feec9501/src/main/org/codehaus/groovy/classgen/asm/WriterController.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/classgen/asm/WriterController.java b/src/main/org/codehaus/groovy/classgen/asm/WriterController.java
index e4cfdbe..4eec57e 100644
--- a/src/main/org/codehaus/groovy/classgen/asm/WriterController.java
+++ b/src/main/org/codehaus/groovy/classgen/asm/WriterController.java
@@ -19,6 +19,8 @@
 package org.codehaus.groovy.classgen.asm;
 
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import org.codehaus.groovy.GroovyBugError;
@@ -39,6 +41,8 @@ import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.MethodVisitor;
 import org.objectweb.asm.Opcodes;
 
+import static org.codehaus.groovy.control.CompilerConfiguration.JDK_TO_BYTECODE_VERSION_MAP;
+
 public class WriterController {
 
     private AsmClassGenerator acg;
@@ -133,24 +137,16 @@ public class WriterController {
             if (CompilerConfiguration.JDK7.equals(targetBytecode)) {
                 return Opcodes.V1_7;
             }
+
             return Opcodes.V1_8;
         } else {
-            if (CompilerConfiguration.JDK4.equals(targetBytecode)) {
-                return Opcodes.V1_4;
-            }
-            if (CompilerConfiguration.JDK5.equals(targetBytecode)) {
-                return Opcodes.V1_5;
-            }
-            if (CompilerConfiguration.JDK6.equals(targetBytecode)) {
-                return Opcodes.V1_6;
-            }
-            if (CompilerConfiguration.JDK7.equals(targetBytecode)) {
-                return Opcodes.V1_7;
-            }
-            if (CompilerConfiguration.JDK8.equals(targetBytecode)) {
-                return Opcodes.V1_8;
+            Integer bytecodeVersion = JDK_TO_BYTECODE_VERSION_MAP.get(targetBytecode);
+
+            if (null != bytecodeVersion) {
+                return bytecodeVersion;
             }
         }
+
         throw new GroovyBugError("Bytecode version ["+targetBytecode+"] is not supported by the compiler");
     }
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/feec9501/src/main/org/codehaus/groovy/control/CompilerConfiguration.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/control/CompilerConfiguration.java b/src/main/org/codehaus/groovy/control/CompilerConfiguration.java
index 5c96276..4bf8ce9 100644
--- a/src/main/org/codehaus/groovy/control/CompilerConfiguration.java
+++ b/src/main/org/codehaus/groovy/control/CompilerConfiguration.java
@@ -21,6 +21,7 @@ package org.codehaus.groovy.control;
 import org.codehaus.groovy.control.customizers.CompilationCustomizer;
 import org.codehaus.groovy.control.io.NullWriter;
 import org.codehaus.groovy.control.messages.WarningMessage;
+import org.objectweb.asm.Opcodes;
 
 import java.io.File;
 import java.io.PrintWriter;
@@ -60,6 +61,17 @@ public class CompilerConfiguration {
     /** An array of the valid targetBytecode values **/
     public static final String[] ALLOWED_JDKS = { JDK4, JDK5, JDK6, JDK7, JDK8 };
 
+    /**
+     * JDK version to bytecode version mapping
+     */
+    public static final Map<String, Integer> JDK_TO_BYTECODE_VERSION_MAP = Collections.unmodifiableMap(new HashMap<String, Integer>() {{
+        put(JDK4, Opcodes.V1_4);
+        put(JDK5, Opcodes.V1_5);
+        put(JDK6, Opcodes.V1_6);
+        put(JDK7, Opcodes.V1_7);
+        put(JDK8, Opcodes.V1_8);
+    }});
+
     // Just call getVMVersion() once.
     public static final String currentJVMVersion = getVMVersion();