Skip to content

Commit 21d098c

Browse files
alexander-gorshenevminamoto79
authored andcommitted
ClassLayoutBuilder debugging tweaks.
Mostly moved from descriptors to .render() (cherry picked from commit e9968c54dc5924116fe3318fe763271588a4e346)
1 parent 17ef26b commit 21d098c

File tree

1 file changed

+13
-11
lines changed
  • backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors

1 file changed

+13
-11
lines changed

backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/ClassLayoutBuilder.kt

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ internal class OverriddenFunctionInfo(
4848
&& function.bridgeDirectionsTo(overriddenFunction).allNotNeeded()
4949

5050
fun getImplementation(context: Context): IrSimpleFunction? {
51+
5152
val target = function.target
5253
val implementation = if (!needBridge)
5354
target
@@ -272,7 +273,7 @@ internal class ClassLayoutBuilder(val irClass: IrClass, val context: Context) {
272273

273274
DEBUG_OUTPUT(0) {
274275
println()
275-
println("BUILDING vTable for ${irClass.descriptor}")
276+
println("BUILDING vTable for ${irClass.render()}")
276277
}
277278

278279
val superVtableEntries = if (irClass.isSpecialClassWithNoSupertypes()) {
@@ -288,11 +289,11 @@ internal class ClassLayoutBuilder(val irClass: IrClass, val context: Context) {
288289
DEBUG_OUTPUT(0) {
289290
println()
290291
println("SUPER vTable:")
291-
superVtableEntries.forEach { println(" ${it.overriddenFunction.descriptor} -> ${it.function.descriptor}") }
292+
superVtableEntries.forEach { println(" ${it.overriddenFunction.render()} -> ${it.function.render()}") }
292293

293294
println()
294295
println("METHODS:")
295-
methods.forEach { println(" ${it.descriptor}") }
296+
methods.forEach { println(" ${it.render()}") }
296297

297298
println()
298299
println("BUILDING INHERITED vTable")
@@ -302,13 +303,13 @@ internal class ClassLayoutBuilder(val irClass: IrClass, val context: Context) {
302303
val overridingMethod = methods.singleOrNull { it.overrides(superMethod.function) }
303304
if (overridingMethod == null) {
304305

305-
DEBUG_OUTPUT(0) { println("Taking super ${superMethod.overriddenFunction.descriptor} -> ${superMethod.function.descriptor}") }
306+
DEBUG_OUTPUT(0) { println("Taking super ${superMethod.overriddenFunction.render()} -> ${superMethod.function.render()}") }
306307

307308
superMethod
308309
} else {
309310
newVtableSlots.add(OverriddenFunctionInfo(overridingMethod, superMethod.function))
310311

311-
DEBUG_OUTPUT(0) { println("Taking overridden ${superMethod.overriddenFunction.descriptor} -> ${overridingMethod.descriptor}") }
312+
DEBUG_OUTPUT(0) { println("Taking overridden ${superMethod.overriddenFunction.render()} -> ${overridingMethod.render()}") }
312313

313314
OverriddenFunctionInfo(overridingMethod, superMethod.overriddenFunction)
314315
}
@@ -320,18 +321,19 @@ internal class ClassLayoutBuilder(val irClass: IrClass, val context: Context) {
320321
val inheritedVtableSlotsSet = inheritedVtableSlots.map { it.function to it.bridgeDirections }.toSet()
321322

322323
val filteredNewVtableSlots = newVtableSlots
323-
.filterNot { inheritedVtableSlotsSet.contains(it.function to it.bridgeDirections) }
324-
.distinctBy { it.function to it.bridgeDirections }
325-
.filter { it.function.isOverridable }
324+
.filterNot { inheritedVtableSlotsSet.contains(it.function to it.bridgeDirections) }
325+
.distinctBy { it.function to it.bridgeDirections }
326+
.filter { it.function.isOverridable }
326327

327328
DEBUG_OUTPUT(0) {
328329
println()
329330
println("INHERITED vTable slots:")
330-
inheritedVtableSlots.forEach { println(" ${it.overriddenFunction.descriptor} -> ${it.function.descriptor}") }
331+
inheritedVtableSlots.forEach { println(" ${it.overriddenFunction.render()} -> ${it.function.render()}") }
331332

332333
println()
333334
println("MY OWN vTable slots:")
334-
filteredNewVtableSlots.forEach { println(" ${it.overriddenFunction.descriptor} -> ${it.function.descriptor}") }
335+
filteredNewVtableSlots.forEach { println(" ${it.overriddenFunction.render()} -> ${it.function.render()} ${it.function}") }
336+
println("DONE vTable for ${irClass.render()}")
335337
}
336338

337339
inheritedVtableSlots + filteredNewVtableSlots.sortedBy { it.overriddenFunction.uniqueId }
@@ -340,7 +342,7 @@ internal class ClassLayoutBuilder(val irClass: IrClass, val context: Context) {
340342
fun vtableIndex(function: IrSimpleFunction): Int {
341343
val bridgeDirections = function.target.bridgeDirectionsTo(function)
342344
val index = vtableEntries.indexOfFirst { it.function == function && it.bridgeDirections == bridgeDirections }
343-
if (index < 0) throw Error(function.toString() + " not in vtable of " + irClass.toString())
345+
if (index < 0) throw Error(function.render() + " $function " + " (${function.symbol.descriptor}) not in vtable of " + irClass.render())
344346
return index
345347
}
346348

0 commit comments

Comments
 (0)