From 6a6d7bd236f9a8358b0a63f68ac6d657c327597f Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Sun, 29 Dec 2013 20:53:26 +0400 Subject: [PATCH] Refactor JvmMethodSignature Rename kotlinParameterTypes -> valueParameters. Inline some other methods --- .../jetbrains/jet/codegen/CallableMethod.java | 13 ++++++-- .../jet/codegen/ConstructorFrameMap.java | 2 +- .../jet/codegen/FunctionCodegen.java | 10 +++--- .../codegen/signature/JvmMethodSignature.java | 32 ++++--------------- .../jet/codegen/state/JetTypeMapper.java | 5 ++- 5 files changed, 25 insertions(+), 37 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/CallableMethod.java b/compiler/backend/src/org/jetbrains/jet/codegen/CallableMethod.java index 8cc76d466f8..4076f6c8a0c 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/CallableMethod.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/CallableMethod.java @@ -22,12 +22,14 @@ import org.jetbrains.asm4.Type; import org.jetbrains.asm4.commons.InstructionAdapter; import org.jetbrains.asm4.commons.Method; import org.jetbrains.asm4.util.Printer; +import org.jetbrains.jet.codegen.signature.JvmMethodParameterKind; import org.jetbrains.jet.codegen.signature.JvmMethodParameterSignature; import org.jetbrains.jet.codegen.signature.JvmMethodSignature; import org.jetbrains.jet.codegen.state.GenerationState; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; import org.jetbrains.jet.lang.resolve.java.JvmAbi; +import java.util.ArrayList; import java.util.List; import static org.jetbrains.asm4.Opcodes.INVOKESPECIAL; @@ -70,12 +72,19 @@ public class CallableMethod implements Callable { @NotNull public List getValueParameters() { - return signature.getKotlinParameterTypes(); + return signature.getValueParameters(); } @NotNull public List getValueParameterTypes() { - return signature.getValueParameterTypes(); + List valueParameters = signature.getValueParameters(); + List result = new ArrayList(valueParameters.size()); + for (JvmMethodParameterSignature parameter : valueParameters) { + if (parameter.getKind() == JvmMethodParameterKind.VALUE) { + result.add(parameter.getAsmType()); + } + } + return result; } @NotNull diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ConstructorFrameMap.java b/compiler/backend/src/org/jetbrains/jet/codegen/ConstructorFrameMap.java index 506b8cbfb4d..67f4610c94d 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ConstructorFrameMap.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ConstructorFrameMap.java @@ -29,7 +29,7 @@ public class ConstructorFrameMap extends FrameMap { public ConstructorFrameMap(@NotNull JvmMethodSignature signature) { enterTemp(OBJECT_TYPE); // this - for (JvmMethodParameterSignature parameterType : signature.getKotlinParameterTypes()) { + for (JvmMethodParameterSignature parameterType : signature.getValueParameters()) { if (parameterType.getKind() == JvmMethodParameterKind.OUTER) { myOuterThisIndex = enterTemp(OBJECT_TYPE); // this0 } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java index 3b6f85ae20e..309a2671f8f 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java @@ -154,7 +154,7 @@ public class FunctionCodegen extends ParentCodegenAwareImpl { @NotNull JvmMethodSignature jvmSignature ) { Iterator iterator = functionDescriptor.getValueParameters().iterator(); - List kotlinParameterTypes = jvmSignature.getKotlinParameterTypes(); + List kotlinParameterTypes = jvmSignature.getValueParameters(); for (int i = 0; i < kotlinParameterTypes.size(); i++) { JvmMethodParameterKind kind = kotlinParameterTypes.get(i).getKind(); @@ -178,7 +178,7 @@ public class FunctionCodegen extends ParentCodegenAwareImpl { @NotNull JvmMethodSignature jvmSignature ) { Iterator descriptors = functionDescriptor.getValueParameters().iterator(); - List kotlinParameterTypes = jvmSignature.getKotlinParameterTypes(); + List kotlinParameterTypes = jvmSignature.getValueParameters(); for (int i = 0; i < kotlinParameterTypes.size(); i++) { JvmMethodParameterKind kind = kotlinParameterTypes.get(i).getKind(); @@ -305,7 +305,7 @@ public class FunctionCodegen extends ParentCodegenAwareImpl { @NotNull OwnerKind ownerKind ) { Iterator valueParameters = functionDescriptor.getValueParameters().iterator(); - List params = jvmMethodSignature.getKotlinParameterTypes(); + List params = jvmMethodSignature.getValueParameters(); int shift = 0; boolean isStatic = AsmUtil.isStaticMethod(ownerKind, functionDescriptor); @@ -563,7 +563,7 @@ public class FunctionCodegen extends ParentCodegenAwareImpl { int countOfExtraVarsInMethodArgs = 0; - for (JvmMethodParameterSignature parameterSignature : signature.getKotlinParameterTypes()) { + for (JvmMethodParameterSignature parameterSignature : signature.getValueParameters()) { if (parameterSignature.getKind() != JvmMethodParameterKind.VALUE) { countOfExtraVarsInMethodArgs++; frameMap.enterTemp(parameterSignature.getAsmType()); @@ -629,7 +629,7 @@ public class FunctionCodegen extends ParentCodegenAwareImpl { var += ownerType.getSize(); } - for (JvmMethodParameterSignature parameterSignature : signature.getKotlinParameterTypes()) { + for (JvmMethodParameterSignature parameterSignature : signature.getValueParameters()) { if (parameterSignature.getKind() != JvmMethodParameterKind.VALUE) { Type type = parameterSignature.getAsmType(); iv.load(var, type); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/signature/JvmMethodSignature.java b/compiler/backend/src/org/jetbrains/jet/codegen/signature/JvmMethodSignature.java index 54ba6041e1a..f41c2bef76e 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/signature/JvmMethodSignature.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/signature/JvmMethodSignature.java @@ -21,25 +21,21 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.asm4.Type; import org.jetbrains.asm4.commons.Method; -import java.util.ArrayList; import java.util.List; public class JvmMethodSignature { - @NotNull private final Method asmMethod; - @Nullable private final String genericsSignature; - @NotNull - private final List kotlinParameterTypes; + private final List valueParameters; protected JvmMethodSignature( @NotNull Method asmMethod, @Nullable String genericsSignature, - @NotNull List kotlinParameterTypes + @NotNull List valueParameters ) { this.asmMethod = asmMethod; this.genericsSignature = genericsSignature; - this.kotlinParameterTypes = kotlinParameterTypes; + this.valueParameters = valueParameters; } @NotNull @@ -53,8 +49,8 @@ public class JvmMethodSignature { } @NotNull - public List getKotlinParameterTypes() { - return kotlinParameterTypes; + public List getValueParameters() { + return valueParameters; } @NotNull @@ -62,27 +58,11 @@ public class JvmMethodSignature { return asmMethod.getReturnType(); } - @NotNull - public List getValueParameterTypes() { - List r = new ArrayList(kotlinParameterTypes.size()); - for (JvmMethodParameterSignature p : kotlinParameterTypes) { - if (p.getKind() == JvmMethodParameterKind.VALUE) { - r.add(p.getAsmType()); - } - } - return r; - } - @NotNull public JvmMethodSignature replaceName(@NotNull String newName) { return newName.equals(asmMethod.getName()) ? this : - new JvmMethodSignature(new Method(newName, asmMethod.getDescriptor()), genericsSignature, kotlinParameterTypes); - } - - @NotNull - public String getName() { - return asmMethod.getName(); + new JvmMethodSignature(new Method(newName, asmMethod.getDescriptor()), genericsSignature, valueParameters); } @Override diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java b/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java index 14d6a67af42..43a0403d584 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java @@ -767,10 +767,9 @@ public class JetTypeMapper extends BindingTraceAware { .get(BindingContext.REFERENCE_TARGET, superCall.getCalleeExpression().getConstructorReferenceExpression()); if (superDescriptor instanceof ConstructorDescriptor && isAnonymousObject(descriptor.getContainingDeclaration())) { - List types = mapSignature((ConstructorDescriptor) superDescriptor).getKotlinParameterTypes(); - for (JvmMethodParameterSignature type : types) { + for (JvmMethodParameterSignature parameter : mapSignature((ConstructorDescriptor) superDescriptor).getValueParameters()) { signatureWriter.writeParameterType(JvmMethodParameterKind.SUPER_CALL_PARAM); - signatureWriter.writeAsmType(type.getAsmType()); + signatureWriter.writeAsmType(parameter.getAsmType()); signatureWriter.writeParameterTypeEnd(); } }