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/10/05 15:02:46 UTC
[groovy] 01/01: Set target bytecode by JDK
This is an automated email from the ASF dual-hosted git repository.
sunlan pushed a commit to branch danielsun/tweak-defaultTargetBytecodeVersion
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 2f4d7276a533255a068a5069bcc946ac2017dc8d
Author: Daniel Sun <su...@apache.org>
AuthorDate: Tue Oct 5 23:02:07 2021 +0800
Set target bytecode by JDK
---
.../org/codehaus/groovy/control/CompilerConfiguration.java | 11 ++++++++++-
.../java/org/codehaus/groovy/vmplugin/VMPluginFactory.java | 6 +++++-
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java b/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java
index fa366a5..4f1e363 100644
--- a/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java
+++ b/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java
@@ -22,6 +22,7 @@ import org.apache.groovy.util.Maps;
import org.codehaus.groovy.control.customizers.CompilationCustomizer;
import org.codehaus.groovy.control.io.NullWriter;
import org.codehaus.groovy.control.messages.WarningMessage;
+import org.codehaus.groovy.vmplugin.VMPluginFactory;
import org.objectweb.asm.Opcodes;
import java.io.File;
@@ -465,7 +466,7 @@ public class CompilerConfiguration {
sourceEncoding = getSystemPropertySafe("groovy.source.encoding",
getSystemPropertySafe("file.encoding", DEFAULT_SOURCE_ENCODING));
setTargetDirectorySafe(getSystemPropertySafe("groovy.target.directory"));
- setTargetBytecodeIfValid(getSystemPropertySafe("groovy.target.bytecode", JDK8));
+ setTargetBytecodeIfValid(getSystemPropertySafe("groovy.target.bytecode", defaultTargetBytecode()));
defaultScriptExtension = getSystemPropertySafe("groovy.default.scriptExtension", ".groovy");
optimizationOptions = new HashMap<>(4);
@@ -475,6 +476,14 @@ public class CompilerConfiguration {
handleOptimizationOption(PARALLEL_PARSE, getSystemPropertySafe("groovy.parallel.parse", "true"));
}
+ private static String defaultTargetBytecode() {
+ final String javaVersion = VMPluginFactory.getJavaVersion();
+ if (JDK_TO_BYTECODE_VERSION_MAP.containsKey(javaVersion)) {
+ return javaVersion;
+ }
+ return JDK8;
+ }
+
private void handleOptimizationOption(String key, String val) {
if (val != null) optimizationOptions.put(key, Boolean.valueOf(val));
}
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/VMPluginFactory.java b/src/main/java/org/codehaus/groovy/vmplugin/VMPluginFactory.java
index d3ac172..0e0adde 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/VMPluginFactory.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/VMPluginFactory.java
@@ -57,7 +57,7 @@ public class VMPluginFactory {
private static VMPlugin createPlugin() {
return AccessController.doPrivileged((PrivilegedAction<VMPlugin>) () -> {
- final BigDecimal specVer = new BigDecimal(System.getProperty("java.specification.version"));
+ final BigDecimal specVer = new BigDecimal(getJavaVersion());
ClassLoader loader = VMPluginFactory.class.getClassLoader();
for (Map.Entry<BigDecimal, String> entry : PLUGIN_MAP.entrySet()) {
if (isAtLeast(specVer, entry.getKey())) {
@@ -78,4 +78,8 @@ public class VMPluginFactory {
return null;
});
}
+
+ public static String getJavaVersion() {
+ return System.getProperty("java.specification.version");
+ }
}