Repository: groovy Updated Branches: refs/heads/native-lambda 411fb6d48 -> f62c784d8
Trivial refactoring: rename variable names Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/f62c784d Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/f62c784d Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/f62c784d Branch: refs/heads/native-lambda Commit: f62c784d853ec4fcc596088ad8ed1fdeec807fc5 Parents: 411fb6d Author: sunlan <[email protected]> Authored: Tue Jan 23 07:42:20 2018 +0800 Committer: sunlan <[email protected]> Committed: Tue Jan 23 07:42:20 2018 +0800 ---------------------------------------------------------------------- .../classgen/asm/sc/StaticInvocationWriter.java | 8 ++--- .../asm/sc/StaticTypesLambdaWriter.java | 36 ++++++++------------ .../groovy/transform/stc/StaticTypesMarker.java | 2 +- 3 files changed, 20 insertions(+), 26 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/groovy/blob/f62c784d/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticInvocationWriter.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticInvocationWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticInvocationWriter.java index b254337..69e0837 100644 --- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticInvocationWriter.java +++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticInvocationWriter.java @@ -75,7 +75,7 @@ import static org.codehaus.groovy.ast.ClassHelper.CLOSURE_TYPE; import static org.codehaus.groovy.ast.ClassHelper.OBJECT_TYPE; import static org.codehaus.groovy.ast.ClassHelper.getWrapper; import static org.codehaus.groovy.transform.sc.StaticCompilationMetadataKeys.PRIVATE_BRIDGE_METHODS; -import static org.codehaus.groovy.transform.stc.StaticTypesMarker.INFERRED_PARAMETER_TYPE; +import static org.codehaus.groovy.transform.stc.StaticTypesMarker.PARAMETER_TYPE; import static org.objectweb.asm.Opcodes.ACONST_NULL; import static org.objectweb.asm.Opcodes.ALOAD; import static org.objectweb.asm.Opcodes.CHECKCAST; @@ -436,7 +436,7 @@ public class StaticInvocationWriter extends InvocationWriter { // first parameters as usual for (int i = 0; i < para.length - 1; i++) { Expression expression = argumentList.get(i); - expression.putNodeMetaData(INFERRED_PARAMETER_TYPE, para[i].getType()); + expression.putNodeMetaData(PARAMETER_TYPE, para[i].getType()); expression.visit(acg); if (!isNullConstant(expression)) { operandStack.doGroovyCast(para[i].getType()); @@ -462,7 +462,7 @@ public class StaticInvocationWriter extends InvocationWriter { } else if (argumentListSize == para.length) { for (int i = 0; i < argumentListSize; i++) { Expression expression = argumentList.get(i); - expression.putNodeMetaData(INFERRED_PARAMETER_TYPE, para[i].getType()); + expression.putNodeMetaData(PARAMETER_TYPE, para[i].getType()); expression.visit(acg); if (!isNullConstant(expression)) { operandStack.doGroovyCast(para[i].getType()); @@ -494,7 +494,7 @@ public class StaticInvocationWriter extends InvocationWriter { } for (int i = 0; i < arguments.length; i++) { Expression expression = arguments[i]; - expression.putNodeMetaData(INFERRED_PARAMETER_TYPE, para[i].getType()); + expression.putNodeMetaData(PARAMETER_TYPE, para[i].getType()); expression.visit(acg); if (!isNullConstant(expression)) { operandStack.doGroovyCast(para[i].getType()); http://git-wip-us.apache.org/repos/asf/groovy/blob/f62c784d/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 7014a99..121c8f6 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 @@ -38,7 +38,6 @@ import org.codehaus.groovy.classgen.asm.LambdaWriter; import org.codehaus.groovy.classgen.asm.OperandStack; import org.codehaus.groovy.classgen.asm.WriterController; import org.codehaus.groovy.classgen.asm.WriterControllerFactory; -import org.codehaus.groovy.control.SourceUnit; import org.codehaus.groovy.transform.stc.StaticTypesMarker; import org.objectweb.asm.Handle; import org.objectweb.asm.MethodVisitor; @@ -53,7 +52,7 @@ import java.util.Map; import java.util.stream.Collectors; import static org.codehaus.groovy.transform.stc.StaticTypesMarker.INFERRED_LAMBDA_TYPE; -import static org.codehaus.groovy.transform.stc.StaticTypesMarker.INFERRED_PARAMETER_TYPE; +import static org.codehaus.groovy.transform.stc.StaticTypesMarker.PARAMETER_TYPE; import static org.objectweb.asm.Opcodes.ACC_PUBLIC; import static org.objectweb.asm.Opcodes.ACC_STATIC; import static org.objectweb.asm.Opcodes.ALOAD; @@ -90,14 +89,14 @@ public class StaticTypesLambdaWriter extends LambdaWriter { @Override public void writeLambda(LambdaExpression expression) { - ClassNode inferedType = getInferredType(expression); + ClassNode lambdaType = getLambdaType(expression); List<MethodNode> abstractMethodNodeList = - inferedType.redirect().getMethods().stream() + lambdaType.redirect().getMethods().stream() .filter(MethodNode::isAbstract) .collect(Collectors.toList()); - if (!(isFunctionInterface(inferedType) && abstractMethodNodeList.size() == 1)) { + if (!(isFunctionInterface(lambdaType) && abstractMethodNodeList.size() == 1)) { // if the parameter type is not real FunctionInterface, generate the default bytecode, which is actually a closure super.writeLambda(expression); return; @@ -121,11 +120,11 @@ public class StaticTypesLambdaWriter extends LambdaWriter { mv.visitInvokeDynamicInsn( abstractMethodNode.getName(), - createAbstractMethodDesc(inferedType, lambdaClassNode), + createAbstractMethodDesc(lambdaType, lambdaClassNode), createBootstrapMethod(isInterface), createBootstrapMethodArguments(abstractMethodDesc, lambdaClassNode, syntheticLambdaMethodNode) ); - operandStack.replace(inferedType.redirect(), 1); + operandStack.replace(lambdaType.redirect(), 1); if (null != expression.getNodeMetaData(INFERRED_LAMBDA_TYPE)) { // FIXME declaring variable whose initial value is a lambda, e.g. `Function<Integer, String> f = (Integer e) -> 'a' + e` @@ -153,13 +152,13 @@ public class StaticTypesLambdaWriter extends LambdaWriter { } - private ClassNode getInferredType(LambdaExpression expression) { - ClassNode inferedType = expression.getNodeMetaData(INFERRED_PARAMETER_TYPE); + private ClassNode getLambdaType(LambdaExpression expression) { + ClassNode type = expression.getNodeMetaData(PARAMETER_TYPE); - if (null == inferedType) { - inferedType = expression.getNodeMetaData(INFERRED_LAMBDA_TYPE); + if (null == type) { + type = expression.getNodeMetaData(INFERRED_LAMBDA_TYPE); } - return inferedType; + return type; } private void loadEnclosingClassInstance() { @@ -379,16 +378,11 @@ public class StaticTypesLambdaWriter extends LambdaWriter { } private static final class TransformationVisitor extends CorrectAccessedVariableVisitor { - private Parameter thisParameter; + private Parameter enclosingThisParameter; - public TransformationVisitor(InnerClassNode icn, Parameter thisParameter) { + public TransformationVisitor(InnerClassNode icn, Parameter enclosingThisParameter) { super(icn); - this.thisParameter = thisParameter; - } - - @Override - protected SourceUnit getSourceUnit() { - return null; + this.enclosingThisParameter = enclosingThisParameter; } @Override @@ -399,7 +393,7 @@ public class StaticTypesLambdaWriter extends LambdaWriter { if (objectExpression instanceof VariableExpression) { VariableExpression originalObjectExpression = (VariableExpression) objectExpression; if (null == originalObjectExpression.getAccessedVariable()) { - VariableExpression thisVariable = new VariableExpression(thisParameter); + VariableExpression thisVariable = new VariableExpression(enclosingThisParameter); thisVariable.setSourcePosition(originalObjectExpression); call.setObjectExpression(thisVariable); http://git-wip-us.apache.org/repos/asf/groovy/blob/f62c784d/src/main/java/org/codehaus/groovy/transform/stc/StaticTypesMarker.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypesMarker.java b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypesMarker.java index fcde258..73eecad 100644 --- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypesMarker.java +++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypesMarker.java @@ -38,6 +38,6 @@ public enum StaticTypesMarker { PV_METHODS_ACCESS, // set of private methods that are accessed from closures or inner classes DYNAMIC_RESOLUTION, // call recognized by a type checking extension as a dynamic method call SUPER_MOP_METHOD_REQUIRED, // used to store the list of MOP methods that still have to be generated - INFERRED_PARAMETER_TYPE, // used to store the parameter type information of method invocation on an expression + PARAMETER_TYPE, // used to store the parameter type information of method invocation on an expression INFERRED_LAMBDA_TYPE // used to store the lambda type information on a lambda expression }
