Skip to content

Commit

Permalink
Fix for #1136: prefer user's explicit choice for "indy" optimization opt
Browse files Browse the repository at this point in the history
  • Loading branch information
eric-milles committed Jul 3, 2020
1 parent 3f892f3 commit f34b8cd
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
Expand Up @@ -5289,6 +5289,36 @@ public void testConfigScriptWithError() {
options);
}

@Test
public void testConfigScriptPrecedence() {
Map<String, String> options = getCompilerOptions();
options.put(CompilerOptions.OPTIONG_GroovyCompilerConfigScript, createScript("config.groovy",
"configuration.optimizationOptions.indy = false\n"
).getAbsolutePath());
options.put(CompilerOptions.OPTIONG_GroovyFlags, Integer.toString(CompilerOptions.InvokeDynamic));

//@formatter:off
String[] sources = {
"A.groovy",
"class A {\n" +
" def x\n" +
"}\n",

"B.groovy",
"class B extends A {\n" +
" void test() {\n" +
" x" +
" }\n" +
"}\n",
};
//@formatter:on

runConformTest(sources, "", options);

checkDisassemblyFor("B.class",
" invokeinterface org.codehaus.groovy.runtime.callsite.CallSite.callGroovyObjectGetProperty");
}

@Test // Variable arguments
public void testInvokingVarargs01_JtoG() {
//@formatter:off
Expand Down
Expand Up @@ -270,7 +270,7 @@ public static CompilerConfiguration newCompilerConfiguration(final CompilerOptio
}

if ((compilerOptions.groovyFlags & CompilerOptions.InvokeDynamic) != 0) {
config.getOptimizationOptions().put(CompilerConfiguration.INVOKEDYNAMIC, Boolean.TRUE);
config.getOptimizationOptions().putIfAbsent(CompilerConfiguration.INVOKEDYNAMIC, Boolean.TRUE);
}
if (Boolean.TRUE.equals(config.getOptimizationOptions().get(CompilerConfiguration.INVOKEDYNAMIC))) {
if (config.getTargetBytecode().compareTo(CompilerConfiguration.JDK7) < 0) {
Expand Down

0 comments on commit f34b8cd

Please sign in to comment.