From be954c6e620f3b87d91599100bbc2df7aa99beec Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Tue, 2 Apr 2019 14:35:36 +0200 Subject: [PATCH] Rename LabelOwner into ReturnLabelOwner --- .../inline/AnonymousObjectTransformer.kt | 2 +- .../kotlin/codegen/inline/InlineCodegen.kt | 4 ++-- .../kotlin/codegen/inline/LambdaInfo.kt | 8 +++---- .../kotlin/codegen/inline/MethodInliner.kt | 22 +++++++++---------- .../kotlin/codegen/inline/ParameterInfo.kt | 2 +- ...{LabelOwner.java => ReturnLabelOwner.java} | 8 +++---- .../backend/jvm/codegen/IrInlineCodegen.kt | 2 +- 7 files changed, 24 insertions(+), 24 deletions(-) rename compiler/backend/src/org/jetbrains/kotlin/codegen/inline/{LabelOwner.java => ReturnLabelOwner.java} (80%) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/AnonymousObjectTransformer.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/AnonymousObjectTransformer.kt index 8afd835ad0d..cf351f6078c 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/AnonymousObjectTransformer.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/AnonymousObjectTransformer.kt @@ -280,7 +280,7 @@ class AnonymousObjectTransformer( ), null ) - val result = inliner.doInline(deferringVisitor, LocalVarRemapper(parameters, 0), false, LabelOwner.NOT_APPLICABLE) + val result = inliner.doInline(deferringVisitor, LocalVarRemapper(parameters, 0), false, ReturnLabelOwner.NOT_APPLICABLE) result.reifiedTypeParametersUsages.mergeAll(typeParametersToReify) deferringVisitor.visitMaxs(-1, -1) return result diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.kt index 26430b5660f..9171326da2a 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.kt @@ -273,12 +273,12 @@ abstract class InlineCodegen( //hack to keep linenumber info, otherwise jdi will skip begin of linenumber chain adapter.visitInsn(Opcodes.NOP) - val result = inliner.doInline(adapter, remapper, true, LabelOwner.SKIP_ALL) + val result = inliner.doInline(adapter, remapper, true, ReturnLabelOwner.SKIP_ALL) result.reifiedTypeParametersUsages.mergeAll(reificationResult) val labels = sourceCompiler.getContextLabels() - val infos = MethodInliner.processReturns(adapter, LabelOwner { labels.contains(it) }, true, null) + val infos = MethodInliner.processReturns(adapter, ReturnLabelOwner { labels.contains(it) }, true, null) sourceCompiler.generateAndInsertFinallyBlocks( adapter, infos, (remapper.remap(parameters.argsSizeOnStack + 1).value as StackValue.Local).index ) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/LambdaInfo.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/LambdaInfo.kt index 157222f01b5..48dc1cb66d2 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/LambdaInfo.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/LambdaInfo.kt @@ -37,7 +37,7 @@ import kotlin.properties.Delegates interface FunctionalArgument -abstract class LambdaInfo(@JvmField val isCrossInline: Boolean) : FunctionalArgument, LabelOwner { +abstract class LambdaInfo(@JvmField val isCrossInline: Boolean) : FunctionalArgument, ReturnLabelOwner { abstract val isBoundCallableReference: Boolean @@ -102,7 +102,7 @@ class DefaultLambda( override lateinit var capturedVars: List private set - override fun isMyLabel(name: String): Boolean = false + override fun isReturnFromMe(labelName: String): Boolean = false var originalBoundReceiverType: Type? = null private set @@ -300,8 +300,8 @@ class PsiExpressionLambda( } } - override fun isMyLabel(name: String): Boolean { - return labels.contains(name) + override fun isReturnFromMe(labelName: String): Boolean { + return labels.contains(labelName) } val isPropertyReference: Boolean diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt index 1b9df821228..29eec28e001 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt @@ -67,9 +67,9 @@ class MethodInliner( adapter: MethodVisitor, remapper: LocalVarRemapper, remapReturn: Boolean, - labelOwner: LabelOwner + returnLabelOwner: ReturnLabelOwner ): InlineResult { - return doInline(adapter, remapper, remapReturn, labelOwner, 0) + return doInline(adapter, remapper, remapReturn, returnLabelOwner, 0) } private fun recordTransformation(info: TransformationInfo) { @@ -83,11 +83,11 @@ class MethodInliner( adapter: MethodVisitor, remapper: LocalVarRemapper, remapReturn: Boolean, - labelOwner: LabelOwner, + returnLabelOwner: ReturnLabelOwner, finallyDeepShift: Int ): InlineResult { //analyze body - var transformedNode = markPlacesForInlineAndRemoveInlinable(node, labelOwner, finallyDeepShift) + var transformedNode = markPlacesForInlineAndRemoveInlinable(node, returnLabelOwner, finallyDeepShift) if (inliningContext.isInliningLambda && isDefaultLambdaWithReification(inliningContext.lambdaInfo!!)) { //TODO maybe move reification in one place inliningContext.root.inlineMethodReifier.reifyInstructions(transformedNode) @@ -130,7 +130,7 @@ class MethodInliner( ) } - processReturns(resultNode, labelOwner, remapReturn, end) + processReturns(resultNode, returnLabelOwner, remapReturn, end) //flush transformed node to output resultNode.accept(SkipMaxAndEndVisitor(adapter)) @@ -485,11 +485,11 @@ class MethodInliner( } private fun markPlacesForInlineAndRemoveInlinable( - node: MethodNode, labelOwner: LabelOwner, finallyDeepShift: Int + node: MethodNode, returnLabelOwner: ReturnLabelOwner, finallyDeepShift: Int ): MethodNode { val processingNode = prepareNode(node, finallyDeepShift) - preprocessNodeBeforeInline(processingNode, labelOwner) + preprocessNodeBeforeInline(processingNode, returnLabelOwner) replaceContinuationAccessesWithFakeContinuationsIfNeeded(processingNode) @@ -769,7 +769,7 @@ class MethodInliner( return Type.getArgumentTypes(invoke.desc).let { it.isNotEmpty() && it.last() == languageVersionSettings.continuationAsmType() } } - private fun preprocessNodeBeforeInline(node: MethodNode, labelOwner: LabelOwner) { + private fun preprocessNodeBeforeInline(node: MethodNode, returnLabelOwner: ReturnLabelOwner) { try { FixStackWithLabelNormalizationMethodTransformer().transform("fake", node) } catch (e: Throwable) { @@ -796,7 +796,7 @@ class MethodInliner( // TODO extract isLocalReturn / isNonLocalReturn, see processReturns val labelName = getMarkedReturnLabelOrNull(insnNode) if (labelName != null) { - if (!labelOwner.isMyLabel(labelName)) continue + if (!returnLabelOwner.isReturnFromMe(labelName)) continue insertBeforeInsn = insnNode.previous } @@ -1143,7 +1143,7 @@ class MethodInliner( //process local and global returns (local substituted with goto end-label global kept unchanged) @JvmStatic fun processReturns( - node: MethodNode, labelOwner: LabelOwner, remapReturn: Boolean, endLabel: Label? + node: MethodNode, returnLabelOwner: ReturnLabelOwner, remapReturn: Boolean, endLabel: Label? ): List { if (!remapReturn) { return emptyList() @@ -1157,7 +1157,7 @@ class MethodInliner( val labelName = getMarkedReturnLabelOrNull(insnNode) if (labelName != null) { - isLocalReturn = labelOwner.isMyLabel(labelName) + isLocalReturn = returnLabelOwner.isReturnFromMe(labelName) //remove global return flag if (isLocalReturn) { instructions.remove(insnNode.previous) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ParameterInfo.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ParameterInfo.kt index 3080166a917..de8944236e6 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ParameterInfo.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ParameterInfo.kt @@ -24,7 +24,7 @@ open class ParameterInfo( val isSkipped: Boolean, //for skipped parameter: e.g. inlined lambda val index: Int, var remapValue: StackValue?, //in case when parameter could be extracted from outer context (e.g. from local var) - val declarationIndex: Int = -1 + val declarationIndex: Int ) { var isCaptured: Boolean = false diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/LabelOwner.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ReturnLabelOwner.java similarity index 80% rename from compiler/backend/src/org/jetbrains/kotlin/codegen/inline/LabelOwner.java rename to compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ReturnLabelOwner.java index 0b12f35417b..4b1d1e78cda 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/LabelOwner.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ReturnLabelOwner.java @@ -18,12 +18,12 @@ package org.jetbrains.kotlin.codegen.inline; import org.jetbrains.annotations.NotNull; -public interface LabelOwner { - boolean isMyLabel(@NotNull String name); +public interface ReturnLabelOwner { + boolean isReturnFromMe(@NotNull String labelName); - LabelOwner SKIP_ALL = name -> false; + ReturnLabelOwner SKIP_ALL = name -> false; - LabelOwner NOT_APPLICABLE = name -> { + ReturnLabelOwner NOT_APPLICABLE = name -> { throw new RuntimeException("This operation not applicable for current context"); }; } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrInlineCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrInlineCodegen.kt index a707ef40ee7..82945008b26 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrInlineCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrInlineCodegen.kt @@ -114,7 +114,7 @@ class IrExpressionLambdaImpl( override val isExtensionLambda: Boolean ) : ExpressionLambda(typeMapper, isCrossInline), IrExpressionLambda { - override fun isMyLabel(name: String): Boolean { + override fun isReturnFromMe(labelName: String): Boolean { //TODO("not implemented") return false }