From 75bb15a9fc4788dc66427a1b2ea223513917fa4c Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Fri, 6 Nov 2015 00:33:13 +0300 Subject: [PATCH] Do not wrap callable references when a special option is enabled --- .../src/org/jetbrains/kotlin/codegen/ClosureCodegen.java | 4 +++- .../org/jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClosureCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClosureCodegen.java index 4de6487587f..7b723800709 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClosureCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClosureCodegen.java @@ -260,7 +260,9 @@ public class ClosureCodegen extends MemberCodegen { } if (functionReferenceTarget != null) { - v.invokestatic(REFLECTION, "function", Type.getMethodDescriptor(K_FUNCTION, FUNCTION_REFERENCE), false); + 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/PropertyReferenceCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt index 290a9626e33..e6729b9ff3d 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt @@ -90,7 +90,9 @@ public class PropertyReferenceCodegen( // TODO: ImplementationBodyCodegen.markLineNumberForSyntheticFunction? override fun generateBody() { generateConstInstance(asmType, wrapperMethod.getReturnType()) { iv -> - iv.invokestatic(REFLECTION, wrapperMethod.getName(), wrapperMethod.getDescriptor(), false) + if (!"true".equals(System.getProperty("kotlin.jvm.optimize.callable.references"), ignoreCase = true)) { + iv.invokestatic(REFLECTION, wrapperMethod.getName(), wrapperMethod.getDescriptor(), false) + } } generateMethod("property reference init", 0, method("", Type.VOID_TYPE)) {