IC mangling: Replace compiler hack with configuration flag
This commit is contained in:
+1
-3
@@ -61,8 +61,6 @@ object InlineClassAbi {
|
||||
return irClass.primaryConstructor!!.valueParameters[0].type
|
||||
}
|
||||
|
||||
private fun IrFunction.isFunctionFromStdlib(): Boolean = fqNameForIrSerialization.startsWith(Name.identifier("kotlin"))
|
||||
|
||||
/**
|
||||
* Returns a mangled name for a function taking inline class arguments
|
||||
* to avoid clashes between overloaded methods.
|
||||
@@ -99,7 +97,7 @@ object InlineClassAbi {
|
||||
alwaysMangleReturnType: Boolean = false
|
||||
): String? {
|
||||
val signatureForMangling = collectFunctionSignatureForManglingSuffix(
|
||||
useOldManglingRules = useOldMangleRules || irFunction.isFunctionFromStdlib(),
|
||||
useOldManglingRules = useOldMangleRules,
|
||||
requiresFunctionNameManglingForParameterTypes = irFunction.fullValueParameterList.any { it.type.requiresMangling },
|
||||
fqNamesForMangling = irFunction.fullValueParameterList.map {
|
||||
it.type.asInfoForMangling()
|
||||
|
||||
+8
-2
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.backend.jvm.codegen.classFileContainsMethod
|
||||
import org.jetbrains.kotlin.backend.jvm.ir.isStaticInlineClassReplacement
|
||||
import org.jetbrains.kotlin.backend.jvm.lower.inlineclasses.InlineClassAbi.mangledNameFor
|
||||
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
|
||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.addValueParameter
|
||||
@@ -221,8 +222,13 @@ class MemoizedInlineClassReplacements(
|
||||
if (noFakeOverride) {
|
||||
isFakeOverride = false
|
||||
}
|
||||
name = mangledNameFor(function, mangleReturnTypes, false)
|
||||
if (name.asString().contains("-") && classFileContainsMethod(function, context, name.asString()) == false) {
|
||||
val useOldManglingScheme = context.state.configuration.getBoolean(JVMConfigurationKeys.USE_OLD_INLINE_CLASSES_MANGLING_SCHEME)
|
||||
name = mangledNameFor(function, mangleReturnTypes, useOldManglingScheme)
|
||||
if (
|
||||
!useOldManglingScheme &&
|
||||
name.asString().contains("-") &&
|
||||
classFileContainsMethod(function, context, name.asString()) == false
|
||||
) {
|
||||
name = mangledNameFor(function, mangleReturnTypes, true)
|
||||
}
|
||||
returnType = function.returnType
|
||||
|
||||
Reference in New Issue
Block a user