Trivial refactoring: rename method name and extract common checks
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 4f7f5d9..a80c5c8 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
@@ -136,8 +136,9 @@
addDeserializeLambdaMethod();
}
- newGroovyLambdaWrapperAndLoad(lambdaWrapperClassNode, syntheticLambdaMethodNode, expression);
- loadEnclosingClassInstance(syntheticLambdaMethodNode);
+ boolean accessingInstanceMembers = isAccessingInstanceMembersOfEnclosingClass(syntheticLambdaMethodNode);
+ newGroovyLambdaWrapperAndLoad(lambdaWrapperClassNode, expression, accessingInstanceMembers);
+ loadEnclosingClassInstance(accessingInstanceMembers);
}
MethodVisitor mv = controller.getMethodVisitor();
@@ -161,12 +162,12 @@
return new Parameter[]{new Parameter(ClassHelper.SERIALIZEDLAMBDA_TYPE, SERIALIZED_LAMBDA_PARAM_NAME)};
}
- private void loadEnclosingClassInstance(MethodNode syntheticLambdaMethodNode) {
+ private void loadEnclosingClassInstance(boolean accessingInstanceMembers) {
MethodVisitor mv = controller.getMethodVisitor();
OperandStack operandStack = controller.getOperandStack();
CompileStack compileStack = controller.getCompileStack();
- if (controller.isStaticMethod() || compileStack.isInSpecialConstructorCall() || !isAccessingInstanceMembers(syntheticLambdaMethodNode)) {
+ if (controller.isStaticMethod() || compileStack.isInSpecialConstructorCall() || !accessingInstanceMembers) {
operandStack.pushConstant(ConstantExpression.NULL);
} else {
mv.visitVarInsn(ALOAD, 0);
@@ -174,7 +175,7 @@
}
}
- private boolean isAccessingInstanceMembers(MethodNode syntheticLambdaMethodNode) {
+ private boolean isAccessingInstanceMembersOfEnclosingClass(MethodNode syntheticLambdaMethodNode) {
ObjectHolder<Boolean> objectHolder = new ObjectHolder<>(false);
ClassCodeVisitorSupport classCodeVisitorSupport = new ClassCodeVisitorSupport() {
@Override
@@ -207,13 +208,13 @@
return objectHolder.getObject();
}
- private void newGroovyLambdaWrapperAndLoad(ClassNode lambdaWrapperClassNode, MethodNode syntheticLambdaMethodNode, LambdaExpression expression) {
+ private void newGroovyLambdaWrapperAndLoad(ClassNode lambdaWrapperClassNode, LambdaExpression expression, boolean accessingInstanceMembers) {
MethodVisitor mv = controller.getMethodVisitor();
String lambdaWrapperClassInternalName = BytecodeHelper.getClassInternalName(lambdaWrapperClassNode);
mv.visitTypeInsn(NEW, lambdaWrapperClassInternalName);
mv.visitInsn(DUP);
- loadEnclosingClassInstance(syntheticLambdaMethodNode);
+ loadEnclosingClassInstance(accessingInstanceMembers);
controller.getOperandStack().dup();
loadSharedVariables(expression);