From e9efc9e892a62c1e019c84cd49177b66dffb1902 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Mon, 24 Oct 2016 16:47:36 +0300 Subject: [PATCH] Replace usages of BasicValue constants in master with StrictBasicValue --- .../coroutines/CoroutineTransformationClassBuilder.kt | 4 ++-- .../codegen/coroutines/processUninitializedStores.kt | 11 ++++++----- .../codegen/coroutines/refinedIntTypesAnalysis.kt | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/CoroutineTransformationClassBuilder.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/CoroutineTransformationClassBuilder.kt index 85ae871f1b2..8c626abc9a4 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/CoroutineTransformationClassBuilder.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/CoroutineTransformationClassBuilder.kt @@ -20,6 +20,7 @@ import com.intellij.util.containers.Stack import org.jetbrains.kotlin.codegen.* import org.jetbrains.kotlin.codegen.optimization.DeadCodeEliminationMethodTransformer import org.jetbrains.kotlin.codegen.optimization.FixStackWithLabelNormalizationMethodTransformer +import org.jetbrains.kotlin.codegen.optimization.common.StrictBasicValue import org.jetbrains.kotlin.codegen.optimization.common.analyzeLiveness import org.jetbrains.kotlin.codegen.optimization.common.insnListOf import org.jetbrains.kotlin.codegen.optimization.common.removeEmptyCatchBlocks @@ -32,7 +33,6 @@ import org.jetbrains.org.objectweb.asm.Opcodes import org.jetbrains.org.objectweb.asm.Type import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter import org.jetbrains.org.objectweb.asm.tree.* -import org.jetbrains.org.objectweb.asm.tree.analysis.BasicValue class CoroutineTransformationClassBuilder(private val delegate: ClassBuilder) : DelegatingClassBuilder() { override fun getDelegate() = delegate @@ -231,7 +231,7 @@ class CoroutineTransformerMethodVisitor( .map { Pair(it, frame.getLocal(it)) } .filter { val (index, value) = it - value != BasicValue.UNINITIALIZED_VALUE && livenessFrame.isAlive(index) + value != StrictBasicValue.UNINITIALIZED_VALUE && livenessFrame.isAlive(index) } for ((index, basicValue) in variablesToSpill) { diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/processUninitializedStores.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/processUninitializedStores.kt index a16cab1c7a6..b03d99c440e 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/processUninitializedStores.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/processUninitializedStores.kt @@ -18,6 +18,7 @@ package org.jetbrains.kotlin.codegen.coroutines import org.jetbrains.kotlin.codegen.optimization.common.CustomFramesMethodAnalyzer import org.jetbrains.kotlin.codegen.optimization.common.OptimizationBasicInterpreter +import org.jetbrains.kotlin.codegen.optimization.common.StrictBasicValue import org.jetbrains.kotlin.codegen.optimization.common.insnListOf import org.jetbrains.org.objectweb.asm.Opcodes import org.jetbrains.org.objectweb.asm.Type @@ -114,7 +115,7 @@ internal fun processUninitializedStores(methodNode: MethodNode) { private class UninitializedNewValue( val newInsn: TypeInsnNode, val internalName: String -) : BasicValue(Type.getObjectType(internalName)) { +) : StrictBasicValue(Type.getObjectType(internalName)) { override fun toString() = "UninitializedNewValue(internalName='$internalName')" } @@ -129,7 +130,7 @@ private class UninitializedNewValueFrame(nLocals: Int, nStack: Int) : Frame call - push(BasicValue(value.type)) + push(StrictBasicValue(value.type)) } } } @@ -175,14 +176,14 @@ private class UninitializedNewValueMarkerInterpreter : OptimizationBasicInterpre override fun merge(v: BasicValue, w: BasicValue): BasicValue { if (v === w) return v - if (v === BasicValue.UNINITIALIZED_VALUE || w === BasicValue.UNINITIALIZED_VALUE) { - return BasicValue.UNINITIALIZED_VALUE + if (v === StrictBasicValue.UNINITIALIZED_VALUE || w === StrictBasicValue.UNINITIALIZED_VALUE) { + return StrictBasicValue.UNINITIALIZED_VALUE } if (v is UninitializedNewValue || w is UninitializedNewValue) { if ((v as? UninitializedNewValue)?.newInsn !== (w as? UninitializedNewValue)?.newInsn) { // Merge of two different ANEW result is possible, but such values should not be used further - return BasicValue.UNINITIALIZED_VALUE + return StrictBasicValue.UNINITIALIZED_VALUE } return v diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/refinedIntTypesAnalysis.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/refinedIntTypesAnalysis.kt index 4397a718b6e..bdbc15e956b 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/refinedIntTypesAnalysis.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/refinedIntTypesAnalysis.kt @@ -153,7 +153,7 @@ internal fun performRefinedTypeAnalysis(methodNode: MethodNode, thisName: String "int type expected, but ${current.getLocal(it.index)?.type} was found in basic frames" } - current.setLocal(it.index, BasicValue(it.value)) + current.setLocal(it.index, StrictBasicValue(it.value)) } current