[IR] Disable rename of inline symbols
Merge-request: KT-MR-5801 Merged-by: Ilya Goncharov <Ilya.Goncharov@jetbrains.com>
This commit is contained in:
+3
-21
@@ -12,14 +12,14 @@ import org.jetbrains.kotlin.ir.declarations.copyAttributes
|
|||||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrTypeOperatorCall
|
import org.jetbrains.kotlin.ir.expressions.IrTypeOperatorCall
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrTypeOperatorCallImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrTypeOperatorCallImpl
|
||||||
import org.jetbrains.kotlin.ir.symbols.*
|
import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol
|
||||||
|
import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
|
||||||
import org.jetbrains.kotlin.ir.types.*
|
import org.jetbrains.kotlin.ir.types.*
|
||||||
import org.jetbrains.kotlin.ir.types.impl.IrStarProjectionImpl
|
import org.jetbrains.kotlin.ir.types.impl.IrStarProjectionImpl
|
||||||
import org.jetbrains.kotlin.ir.types.impl.buildSimpleType
|
import org.jetbrains.kotlin.ir.types.impl.buildSimpleType
|
||||||
import org.jetbrains.kotlin.ir.types.impl.makeTypeProjection
|
import org.jetbrains.kotlin.ir.types.impl.makeTypeProjection
|
||||||
import org.jetbrains.kotlin.ir.util.*
|
import org.jetbrains.kotlin.ir.util.*
|
||||||
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
||||||
import org.jetbrains.kotlin.name.Name
|
|
||||||
|
|
||||||
internal class DeepCopyIrTreeWithSymbolsForInliner(
|
internal class DeepCopyIrTreeWithSymbolsForInliner(
|
||||||
val typeArguments: Map<IrTypeParameterSymbol, IrType?>?,
|
val typeArguments: Map<IrTypeParameterSymbol, IrType?>?,
|
||||||
@@ -40,24 +40,6 @@ internal class DeepCopyIrTreeWithSymbolsForInliner(
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
private var nameIndex = 0
|
|
||||||
|
|
||||||
private fun generateCopyName(name: Name) = Name.identifier(name.toString() + "_" + (nameIndex++).toString())
|
|
||||||
|
|
||||||
private inner class InlinerSymbolRenamer : SymbolRenamer {
|
|
||||||
private val map = mutableMapOf<IrSymbol, Name>()
|
|
||||||
|
|
||||||
override fun getClassName(symbol: IrClassSymbol) = map.getOrPut(symbol) { generateCopyName(symbol.owner.name) }
|
|
||||||
override fun getFunctionName(symbol: IrSimpleFunctionSymbol) = map.getOrPut(symbol) { generateCopyName(symbol.owner.name) }
|
|
||||||
override fun getFieldName(symbol: IrFieldSymbol) = symbol.owner.name
|
|
||||||
override fun getFileName(symbol: IrFileSymbol) = symbol.owner.fqName
|
|
||||||
override fun getExternalPackageFragmentName(symbol: IrExternalPackageFragmentSymbol) = symbol.owner.fqName
|
|
||||||
override fun getEnumEntryName(symbol: IrEnumEntrySymbol) = symbol.owner.name
|
|
||||||
override fun getVariableName(symbol: IrVariableSymbol) = map.getOrPut(symbol) { generateCopyName(symbol.owner.name) }
|
|
||||||
override fun getTypeParameterName(symbol: IrTypeParameterSymbol) = symbol.owner.name
|
|
||||||
override fun getValueParameterName(symbol: IrValueParameterSymbol) = symbol.owner.name
|
|
||||||
}
|
|
||||||
|
|
||||||
private inner class InlinerTypeRemapper(
|
private inner class InlinerTypeRemapper(
|
||||||
val symbolRemapper: SymbolRemapper,
|
val symbolRemapper: SymbolRemapper,
|
||||||
val typeArguments: Map<IrTypeParameterSymbol, IrType?>?
|
val typeArguments: Map<IrTypeParameterSymbol, IrType?>?
|
||||||
@@ -157,7 +139,7 @@ internal class DeepCopyIrTreeWithSymbolsForInliner(
|
|||||||
|
|
||||||
private val symbolRemapper = SymbolRemapperImpl(NullDescriptorsRemapper)
|
private val symbolRemapper = SymbolRemapperImpl(NullDescriptorsRemapper)
|
||||||
private val typeRemapper = InlinerTypeRemapper(symbolRemapper, typeArguments)
|
private val typeRemapper = InlinerTypeRemapper(symbolRemapper, typeArguments)
|
||||||
private val copier = object : DeepCopyIrTreeWithSymbols(symbolRemapper, typeRemapper, InlinerSymbolRenamer()) {
|
private val copier = object : DeepCopyIrTreeWithSymbols(symbolRemapper, typeRemapper) {
|
||||||
private fun IrType.remapTypeAndErase() = typeRemapper.remapTypeAndOptionallyErase(this, erase = true)
|
private fun IrType.remapTypeAndErase() = typeRemapper.remapTypeAndOptionallyErase(this, erase = true)
|
||||||
|
|
||||||
override fun visitTypeOperator(expression: IrTypeOperatorCall) =
|
override fun visitTypeOperator(expression: IrTypeOperatorCall) =
|
||||||
|
|||||||
+1
-1
@@ -62,7 +62,7 @@ class DwarfTests {
|
|||||||
}
|
}
|
||||||
""".trimIndent().binary("poisoned", "-g", "-l", poisonLibrary.toString(), "-l", callbackLibrary.toString(), "-l", trapLibrary.toString())
|
""".trimIndent().binary("poisoned", "-g", "-l", poisonLibrary.toString(), "-l", callbackLibrary.toString(), "-l", trapLibrary.toString())
|
||||||
|
|
||||||
binary.dwarfDumpLookup("kfun:main\$<anonymous>_1#internal") {
|
binary.dwarfDumpLookup("kfun:main\$lambda-0#internal") {
|
||||||
assertFalse(this.isEmpty())
|
assertFalse(this.isEmpty())
|
||||||
val subprogram = single { it.tag == DwarfTag.Tag.DW_TAG_subprogram } as DwarfTagSubprogram
|
val subprogram = single { it.tag == DwarfTag.Tag.DW_TAG_subprogram } as DwarfTagSubprogram
|
||||||
assertEquals(subprogram.file!!.name, "poison.kt")
|
assertEquals(subprogram.file!!.name, "poison.kt")
|
||||||
|
|||||||
+15
-15
@@ -258,9 +258,9 @@ class LldbTests {
|
|||||||
> bt
|
> bt
|
||||||
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
|
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
|
||||||
* frame #0: [..] kt42208.kexe`ThrowException
|
* frame #0: [..] kt42208.kexe`ThrowException
|
||||||
frame #1: [..] kt42208.kexe`kfun:main${'$'}<anonymous>_1#internal at kt42208-2.kt:3:18
|
frame #1: [..] kt42208.kexe`kfun:main${'$'}lambda-0#internal at kt42208-2.kt:3:18
|
||||||
frame #2: [..] kt42208.kexe`kfun:${'$'}main${'$'}<anonymous>_1${'$'}FUNCTION_REFERENCE${'$'}0.invoke#internal(_this=[..]) at kt42208-1.kt:2:5
|
frame #2: [..] kt42208.kexe`kfun:${'$'}main${'$'}lambda-0${'$'}FUNCTION_REFERENCE${'$'}0.invoke#internal(_this=[..]) at kt42208-1.kt:2:5
|
||||||
frame #3: [..] kt42208.kexe`kfun:${'$'}main${'$'}<anonymous>_1${'$'}FUNCTION_REFERENCE${'$'}0.${'$'}<bridge-UNN>invoke(_this=[..]){}kotlin.Nothing#internal at kt42208-1.kt:2:5
|
frame #3: [..] kt42208.kexe`kfun:${'$'}main${'$'}lambda-0${'$'}FUNCTION_REFERENCE${'$'}0.${'$'}<bridge-UNN>invoke(_this=[..]){}kotlin.Nothing#internal at kt42208-1.kt:2:5
|
||||||
frame #4: [..] kt42208.kexe`kfun:#main(){} at kt42208-1.kt:2:5
|
frame #4: [..] kt42208.kexe`kfun:#main(){} at kt42208-1.kt:2:5
|
||||||
frame #5: [..] kt42208.kexe`Konan_start(args=[..]) at kt42208-1.kt:1:1
|
frame #5: [..] kt42208.kexe`Konan_start(args=[..]) at kt42208-1.kt:1:1
|
||||||
frame #6: [..]
|
frame #6: [..]
|
||||||
@@ -293,26 +293,26 @@ class LldbTests {
|
|||||||
> ${lldbCommandRunOrContinue()}
|
> ${lldbCommandRunOrContinue()}
|
||||||
> bt
|
> bt
|
||||||
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
|
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
|
||||||
* frame #0: [..] kt42208.kexe`kfun:main${'$'}<anonymous>_1#internal at kt42208-2.kt:5:5
|
* frame #0: [..] kt42208.kexe`kfun:main${'$'}lambda-0#internal at kt42208-2.kt:5:5
|
||||||
frame #1: [..] kt42208.kexe`kfun:${'$'}main${'$'}<anonymous>_1${'$'}FUNCTION_REFERENCE${'$'}0.invoke#internal(_this=[..]) at kt42208-1.kt:2:5
|
frame #1: [..] kt42208.kexe`kfun:${'$'}main${'$'}lambda-0${'$'}FUNCTION_REFERENCE${'$'}0.invoke#internal(_this=[..]) at kt42208-1.kt:2:5
|
||||||
frame #2: [..] kt42208.kexe`kfun:${'$'}main${'$'}<anonymous>_1${'$'}FUNCTION_REFERENCE${'$'}0.${'$'}<bridge-BNN>invoke(_this=[..]){}kotlin.Boolean#internal at kt42208-1.kt:2:5
|
frame #2: [..] kt42208.kexe`kfun:${'$'}main${'$'}lambda-0${'$'}FUNCTION_REFERENCE${'$'}0.${'$'}<bridge-BNN>invoke(_this=[..]){}kotlin.Boolean#internal at kt42208-1.kt:2:5
|
||||||
frame #3: [..] kt42208.kexe`kfun:#main(){} at kt42208-1.kt:3:5
|
frame #3: [..] kt42208.kexe`kfun:#main(){} at kt42208-1.kt:3:5
|
||||||
frame #4: [..] kt42208.kexe`Konan_start(args=[..]) at kt42208-1.kt:1:1
|
frame #4: [..] kt42208.kexe`Konan_start(args=[..]) at kt42208-1.kt:1:1
|
||||||
frame #5: [..]
|
frame #5: [..]
|
||||||
> c
|
> c
|
||||||
> bt
|
> bt
|
||||||
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
|
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
|
||||||
* frame #0: [..] kt42208.kexe`kfun:main${'$'}<anonymous>_1#internal at kt42208-2.kt:5:5
|
* frame #0: [..] kt42208.kexe`kfun:main${'$'}lambda-0#internal at kt42208-2.kt:5:5
|
||||||
frame #1: [..] kt42208.kexe`kfun:${'$'}main${'$'}<anonymous>_1${'$'}FUNCTION_REFERENCE${'$'}0.invoke#internal(_this=[..]) at kt42208-1.kt:2:5
|
frame #1: [..] kt42208.kexe`kfun:${'$'}main${'$'}lambda-0${'$'}FUNCTION_REFERENCE${'$'}0.invoke#internal(_this=[..]) at kt42208-1.kt:2:5
|
||||||
frame #2: [..] kt42208.kexe`kfun:${'$'}main${'$'}<anonymous>_1${'$'}FUNCTION_REFERENCE${'$'}0.${'$'}<bridge-BNN>invoke(_this=[..]){}kotlin.Boolean#internal at kt42208-1.kt:2:5
|
frame #2: [..] kt42208.kexe`kfun:${'$'}main${'$'}lambda-0${'$'}FUNCTION_REFERENCE${'$'}0.${'$'}<bridge-BNN>invoke(_this=[..]){}kotlin.Boolean#internal at kt42208-1.kt:2:5
|
||||||
frame #3: [..] kt42208.kexe`kfun:#main(){} at kt42208-1.kt:4:5
|
frame #3: [..] kt42208.kexe`kfun:#main(){} at kt42208-1.kt:4:5
|
||||||
frame #4: [..] kt42208.kexe`Konan_start(args=[..]) at kt42208-1.kt:1:1
|
frame #4: [..] kt42208.kexe`Konan_start(args=[..]) at kt42208-1.kt:1:1
|
||||||
> c
|
> c
|
||||||
> bt
|
> bt
|
||||||
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
|
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
|
||||||
* frame #0: [..] kt42208.kexe`kfun:main${'$'}<anonymous>_1#internal at kt42208-2.kt:5:5
|
* frame #0: [..] kt42208.kexe`kfun:main${'$'}lambda-0#internal at kt42208-2.kt:5:5
|
||||||
frame #1: [..] kt42208.kexe`kfun:${'$'}main${'$'}<anonymous>_1${'$'}FUNCTION_REFERENCE${'$'}0.invoke#internal(_this=[..]) at kt42208-1.kt:2:5
|
frame #1: [..] kt42208.kexe`kfun:${'$'}main${'$'}lambda-0${'$'}FUNCTION_REFERENCE${'$'}0.invoke#internal(_this=[..]) at kt42208-1.kt:2:5
|
||||||
frame #2: [..] kt42208.kexe`kfun:${'$'}main${'$'}<anonymous>_1${'$'}FUNCTION_REFERENCE${'$'}0.${'$'}<bridge-BNN>invoke(_this=[..]){}kotlin.Boolean#internal at kt42208-1.kt:2:5
|
frame #2: [..] kt42208.kexe`kfun:${'$'}main${'$'}lambda-0${'$'}FUNCTION_REFERENCE${'$'}0.${'$'}<bridge-BNN>invoke(_this=[..]){}kotlin.Boolean#internal at kt42208-1.kt:2:5
|
||||||
frame #3: [..] kt42208.kexe`kfun:#main(){} at kt42208-1.kt:5:5
|
frame #3: [..] kt42208.kexe`kfun:#main(){} at kt42208-1.kt:5:5
|
||||||
frame #4: [..] kt42208.kexe`Konan_start(args=[..]) at kt42208-1.kt:1:1
|
frame #4: [..] kt42208.kexe`Konan_start(args=[..]) at kt42208-1.kt:1:1
|
||||||
> q
|
> q
|
||||||
@@ -348,9 +348,9 @@ class LldbTests {
|
|||||||
> ${lldbCommandRunOrContinue()}
|
> ${lldbCommandRunOrContinue()}
|
||||||
> bt
|
> bt
|
||||||
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
|
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
|
||||||
* frame #0: [..] kt42208.kexe`kfun:main${'$'}<anonymous>_1#internal at kt42208-2.kt:5:5
|
* frame #0: [..] kt42208.kexe`kfun:main${'$'}lambda-0#internal at kt42208-2.kt:5:5
|
||||||
frame #1: [..] kt42208.kexe`kfun:${'$'}main${'$'}<anonymous>_1${'$'}FUNCTION_REFERENCE${'$'}0.invoke#internal(_this=[..]) at kt42208-1.kt:2:5
|
frame #1: [..] kt42208.kexe`kfun:${'$'}main${'$'}lambda-0${'$'}FUNCTION_REFERENCE${'$'}0.invoke#internal(_this=[..]) at kt42208-1.kt:2:5
|
||||||
frame #2: [..] kt42208.kexe`kfun:${'$'}main${'$'}<anonymous>_1${'$'}FUNCTION_REFERENCE${'$'}0.${'$'}<bridge-BNN>invoke(_this=[..]){}kotlin.Boolean#internal at kt42208-1.kt:2:5
|
frame #2: [..] kt42208.kexe`kfun:${'$'}main${'$'}lambda-0${'$'}FUNCTION_REFERENCE${'$'}0.${'$'}<bridge-BNN>invoke(_this=[..]){}kotlin.Boolean#internal at kt42208-1.kt:2:5
|
||||||
frame #3: [..] kt42208.kexe`kfun:#bar(v=[]){} at kt42208-3.kt:2:4
|
frame #3: [..] kt42208.kexe`kfun:#bar(v=[]){} at kt42208-3.kt:2:4
|
||||||
frame #4: [..] kt42208.kexe`kfun:#main(){} at kt42208-1.kt:3:5
|
frame #4: [..] kt42208.kexe`kfun:#main(){} at kt42208-1.kt:3:5
|
||||||
frame #5: [..] kt42208.kexe`Konan_start(args=[]) at kt42208-1.kt:1:1
|
frame #5: [..] kt42208.kexe`Konan_start(args=[]) at kt42208-1.kt:1:1
|
||||||
|
|||||||
Reference in New Issue
Block a user