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 2018/03/20 17:18:28 UTC
groovy git commit: Make generated closure and lambda classes final
Repository: groovy
Updated Branches:
refs/heads/master 5bfadcbea -> 4abc75487
Make generated closure and lambda classes final
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/4abc7548
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/4abc7548
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/4abc7548
Branch: refs/heads/master
Commit: 4abc7548755b0f82560e2e607a49d5dd2e09c07a
Parents: 5bfadcb
Author: danielsun1106 <re...@hotmail.com>
Authored: Wed Mar 21 01:14:54 2018 +0800
Committer: danielsun1106 <re...@hotmail.com>
Committed: Wed Mar 21 01:18:19 2018 +0800
----------------------------------------------------------------------
src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java | 3 ++-
.../codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/4abc7548/src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java
index 22b8653..6ca8574 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java
@@ -51,6 +51,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import static org.objectweb.asm.Opcodes.ACC_FINAL;
import static org.objectweb.asm.Opcodes.ACC_PRIVATE;
import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
import static org.objectweb.asm.Opcodes.ACC_STATIC;
@@ -91,7 +92,7 @@ public class ClosureWriter {
// generate closure as public class to make sure it can be properly invoked by classes of the
// Groovy runtime without circumventing JVM access checks (see CachedMethod for example).
- int mods = ACC_PUBLIC;
+ int mods = ACC_PUBLIC | ACC_FINAL;
if (classNode.isInterface()) {
mods |= ACC_STATIC;
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/4abc7548/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java
index 335945e..59e9df6 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java
@@ -56,6 +56,7 @@ import java.util.stream.Collectors;
import static org.codehaus.groovy.transform.stc.StaticTypesMarker.INFERRED_LAMBDA_TYPE;
import static org.codehaus.groovy.transform.stc.StaticTypesMarker.PARAMETER_TYPE;
+import static org.objectweb.asm.Opcodes.ACC_FINAL;
import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
import static org.objectweb.asm.Opcodes.ACC_STATIC;
import static org.objectweb.asm.Opcodes.ACC_SYNTHETIC;
@@ -106,7 +107,7 @@ public class StaticTypesLambdaWriter extends LambdaWriter {
ClassNode classNode = controller.getClassNode();
boolean isInterface = classNode.isInterface();
- ClassNode lambdaWrapperClassNode = getOrAddLambdaClass(expression, ACC_PUBLIC | (isInterface ? ACC_STATIC : 0) | ACC_SYNTHETIC, abstractMethodNode);
+ ClassNode lambdaWrapperClassNode = getOrAddLambdaClass(expression, ACC_PUBLIC | ACC_FINAL | (isInterface ? ACC_STATIC : 0) | ACC_SYNTHETIC, abstractMethodNode);
MethodNode syntheticLambdaMethodNode = lambdaWrapperClassNode.getMethods(DO_CALL).get(0);
newGroovyLambdaWrapperAndLoad(lambdaWrapperClassNode, syntheticLambdaMethodNode);