From 9e8495dc3de957b085da687b6b704e05f7cca948 Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Fri, 12 May 2017 15:44:13 +0200 Subject: [PATCH] Clean code --- .../kotlin/codegen/inline/AsmTypeRemapper.kt | 6 +----- .../kotlin/codegen/inline/InliningContext.kt | 13 +++++-------- .../kotlin/codegen/inline/MethodInliner.kt | 7 +++---- .../kotlin/codegen/inline/ObjectTransformer.kt | 2 +- .../kotlin/codegen/inline/TypeRemapper.kt | 18 +++++++++--------- 5 files changed, 19 insertions(+), 27 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/AsmTypeRemapper.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/AsmTypeRemapper.kt index 1fde1f4191e..fcc60c6dc22 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/AsmTypeRemapper.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/AsmTypeRemapper.kt @@ -21,16 +21,12 @@ import org.jetbrains.org.objectweb.asm.commons.RemappingSignatureAdapter import org.jetbrains.org.objectweb.asm.signature.SignatureReader import org.jetbrains.org.objectweb.asm.signature.SignatureVisitor -class AsmTypeRemapper(val typeRemapper: TypeRemapper, val isDefaultGeneration: Boolean, val result: InlineResult) : Remapper() { +class AsmTypeRemapper(val typeRemapper: TypeRemapper, val result: InlineResult) : Remapper() { override fun map(type: String): String { return typeRemapper.map(type) } override fun createRemappingSignatureAdapter(v: SignatureVisitor?): SignatureVisitor { - if (isDefaultGeneration) { - return super.createRemappingSignatureAdapter(v) - } - return object : RemappingSignatureAdapter(v, this) { override fun visitTypeVariable(name: String) { /*TODO try to erase absent type variable*/ diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InliningContext.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InliningContext.kt index 36ef31769ff..5f77055bfd9 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InliningContext.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InliningContext.kt @@ -26,7 +26,7 @@ class RootInliningContext( val callElement: KtElement, override val callSiteInfo: InlineCallSiteInfo, val reifiedTypeInliner: ReifiedTypeInliner, - val typeParameterMappings: TypeParameterMappings + typeParameterMappings: TypeParameterMappings ) : InliningContext( null, expressionMap, state, nameGenerator, TypeRemapper.createRoot(typeParameterMappings), null, false ) @@ -76,12 +76,10 @@ open class InliningContext( generator: NameGenerator, newTypeMappings: MutableMap, callSiteInfo: InlineCallSiteInfo - ): InliningContext { - return RegeneratedClassContext( - this, expressionMap, state, generator, TypeRemapper.createFrom(typeRemapper, newTypeMappings), - lambdaInfo, callSiteInfo - ) - } + ): InliningContext = RegeneratedClassContext( + this, expressionMap, state, generator, TypeRemapper.createFrom(typeRemapper, newTypeMappings), + lambdaInfo, callSiteInfo + ) @JvmOverloads fun subInline( @@ -89,7 +87,6 @@ open class InliningContext( additionalTypeMappings: Map = emptyMap(), lambdaInfo: LambdaInfo? = this.lambdaInfo ): InliningContext { - //isInliningLambda && !this.isInliningLambda for root inline lambda val isInliningLambda = lambdaInfo != null return InliningContext( this, expressionMap, state, generator, 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 46c17c17a35..02cef236bbd 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt @@ -123,7 +123,7 @@ class MethodInliner( resultNode.access, resultNode.desc, resultNode, - AsmTypeRemapper(remapper, inliningContext.root.typeParameterMappings == null, result) + AsmTypeRemapper(remapper, result) ) val markerShift = InlineCodegenUtil.calcMarkerShift(parameters, node) @@ -231,8 +231,7 @@ class MethodInliner( else if (isAnonymousConstructorCall(owner, name)) { //TODO add method //TODO add proper message assert(transformationInfo is AnonymousObjectTransformationInfo) { - " call doesn't correspond to object transformation info: " + - owner + "." + name + ", info " + transformationInfo + " call doesn't correspond to object transformation info for '$owner.$name': $transformationInfo" } val parent = inliningContext.parent val shouldRegenerate = transformationInfo!!.shouldRegenerate(isSameModule) @@ -258,7 +257,7 @@ class MethodInliner( //TODO: add new inner class also for other contexts if (inliningContext.parent is RegeneratedClassContext) { - inliningContext.parent!!.typeRemapper.addAdditionalMappings( + inliningContext.parent.typeRemapper.addAdditionalMappings( transformationInfo!!.oldClassName, transformationInfo!!.newClassName ) } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ObjectTransformer.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ObjectTransformer.kt index 0fd9fffb725..af81ce4a240 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ObjectTransformer.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ObjectTransformer.kt @@ -42,7 +42,7 @@ abstract class ObjectTransformer(@JvmField val trans return RemappingClassBuilder( classBuilder, - AsmTypeRemapper(inliningContext.typeRemapper, inliningContext.root.typeParameterMappings == null, transformationResult) + AsmTypeRemapper(inliningContext.typeRemapper, transformationResult) ) } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/TypeRemapper.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/TypeRemapper.kt index 826e1b3947f..968246afdf6 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/TypeRemapper.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/TypeRemapper.kt @@ -23,11 +23,11 @@ class TypeParameter(val oldName: String, val newName: String?, val isReified: Bo //typeMapping data could be changed outside through method processing class TypeRemapper private constructor( private val typeMapping: MutableMap, - val parent: TypeRemapper?, - val isInlineLambda: Boolean = false + val parent: TypeRemapper? = null, + val isRootInlineLambda: Boolean = false ) { - private var additionalMappings: MutableMap = hashMapOf() - private val typeParametersMapping: MutableMap = hashMapOf() + private var additionalMappings = hashMapOf() + private val typeParametersMapping = hashMapOf() fun addMapping(type: String, newType: String) { typeMapping.put(type, newType) @@ -59,13 +59,13 @@ class TypeRemapper private constructor( } fun mapTypeParameter(name: String): TypeParameter? { - return typeParametersMapping[name] ?: if (!isInlineLambda) parent?.mapTypeParameter(name) else null + return typeParametersMapping[name] ?: if (!isRootInlineLambda) parent?.mapTypeParameter(name) else null } companion object { @JvmStatic fun createRoot(formalTypeParameters: TypeParameterMappings?): TypeRemapper { - return TypeRemapper(HashMap(), null).apply { + return TypeRemapper(HashMap()).apply { formalTypeParameters?.forEach { registerTypeParameter(it) } @@ -74,13 +74,13 @@ class TypeRemapper private constructor( @JvmStatic fun createFrom(mappings: MutableMap): TypeRemapper { - return TypeRemapper(mappings, null) + return TypeRemapper(mappings) } @JvmStatic @JvmOverloads - fun createFrom(remapper: TypeRemapper, mappings: Map, isInlineLambda: Boolean = false): TypeRemapper { - return TypeRemapper(createNewAndMerge(remapper, mappings), remapper, isInlineLambda) + fun createFrom(parentRemapper: TypeRemapper, mappings: Map, isRootInlineLambda: Boolean = false): TypeRemapper { + return TypeRemapper(createNewAndMerge(parentRemapper, mappings), parentRemapper, isRootInlineLambda) } private fun createNewAndMerge(remapper: TypeRemapper, additionalTypeMappings: Map): MutableMap {