From 8dc604ac8b220092c9c04339eed2c3a540bf9f5f Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 24 Dec 2015 01:32:55 +0300 Subject: [PATCH] Drop compatibility flag, suppressing optimized generation of callable references --- .../jetbrains/kotlin/codegen/ClosureCodegen.java | 9 +-------- .../jetbrains/kotlin/codegen/MemberCodegen.java | 15 +++++---------- .../kotlin/codegen/PropertyReferenceCodegen.kt | 6 +----- 3 files changed, 7 insertions(+), 23 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClosureCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClosureCodegen.java index 0f39e73f9ff..86c03d644f0 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClosureCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClosureCodegen.java @@ -46,7 +46,6 @@ import org.jetbrains.kotlin.serialization.ProtoBuf; import org.jetbrains.kotlin.types.KotlinType; import org.jetbrains.kotlin.types.expressions.ExpressionTypingUtils; import org.jetbrains.kotlin.util.OperatorNameConventions; -import org.jetbrains.kotlin.utils.FunctionsKt; import org.jetbrains.org.objectweb.asm.AnnotationVisitor; import org.jetbrains.org.objectweb.asm.MethodVisitor; import org.jetbrains.org.objectweb.asm.Type; @@ -212,7 +211,7 @@ public class ClosureCodegen extends MemberCodegen { this.constructor = generateConstructor(); if (isConst(closure)) { - generateConstInstance(asmType, asmType, FunctionsKt.doNothing()); + generateConstInstance(asmType, asmType); } genClosureFields(closure, v, typeMapper); @@ -259,12 +258,6 @@ public class ClosureCodegen extends MemberCodegen { v.invokespecial(asmType.getInternalName(), "", constructor.getDescriptor(), false); } - if (functionReferenceTarget != null) { - if (!"true".equalsIgnoreCase(System.getProperty("kotlin.jvm.optimize.callable.references"))) { - v.invokestatic(REFLECTION, "function", Type.getMethodDescriptor(K_FUNCTION, FUNCTION_REFERENCE), false); - } - } - return Unit.INSTANCE; } } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/MemberCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/MemberCodegen.java index 82fd5f3645e..8048770decd 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/MemberCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/MemberCodegen.java @@ -18,9 +18,7 @@ package org.jetbrains.kotlin.codegen; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.psi.PsiElement; -import kotlin.Unit; import kotlin.jvm.functions.Function0; -import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.backend.common.CodegenUtil; @@ -552,20 +550,17 @@ public abstract class MemberCodegen initialization - ) { - v.newField(JvmDeclarationOriginKt.OtherOrigin(element), ACC_STATIC | ACC_FINAL | ACC_PUBLIC, JvmAbi.INSTANCE_FIELD, fieldAsmType.getDescriptor(), - null, null); + protected void generateConstInstance(@NotNull Type thisAsmType, @NotNull Type fieldAsmType) { + v.newField( + JvmDeclarationOriginKt.OtherOrigin(element), ACC_STATIC | ACC_FINAL | ACC_PUBLIC, JvmAbi.INSTANCE_FIELD, + fieldAsmType.getDescriptor(), null, null + ); if (state.getClassBuilderMode() == ClassBuilderMode.FULL) { InstructionAdapter iv = createOrGetClInitCodegen().v; iv.anew(thisAsmType); iv.dup(); iv.invokespecial(thisAsmType.getInternalName(), "", "()V", false); - initialization.invoke(iv); iv.putstatic(thisAsmType.getInternalName(), JvmAbi.INSTANCE_FIELD, fieldAsmType.getDescriptor()); } } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt index 193bd93b1d5..f0c2113d131 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt @@ -79,11 +79,7 @@ public class PropertyReferenceCodegen( // TODO: ImplementationBodyCodegen.markLineNumberForSyntheticFunction? override fun generateBody() { - generateConstInstance(asmType, wrapperMethod.getReturnType()) { iv -> - if (!"true".equals(System.getProperty("kotlin.jvm.optimize.callable.references"), ignoreCase = true)) { - iv.invokestatic(REFLECTION, wrapperMethod.getName(), wrapperMethod.getDescriptor(), false) - } - } + generateConstInstance(asmType, wrapperMethod.getReturnType()) generateMethod("property reference init", 0, method("", Type.VOID_TYPE)) { load(0, OBJECT_TYPE)