[K/N][IR][codegen] Preliminary support of per-file caches
This commit is contained in:
+7
-5
@@ -87,9 +87,8 @@ class FakeOverrideBuilder(
|
||||
fakeOverrideCandidates[clazz] = compatibilityMode
|
||||
}
|
||||
|
||||
private fun buildFakeOverrideChainsForClass(clazz: IrClass, compatibilityMode: CompatibilityMode) {
|
||||
if (haveFakeOverrides.contains(clazz)) return
|
||||
if (!platformSpecificClassFilter.needToConstructFakeOverrides(clazz)) return
|
||||
private fun buildFakeOverrideChainsForClass(clazz: IrClass, compatibilityMode: CompatibilityMode): Boolean {
|
||||
if (haveFakeOverrides.contains(clazz)) return true
|
||||
|
||||
val superTypes = clazz.superTypes
|
||||
|
||||
@@ -99,15 +98,18 @@ class FakeOverrideBuilder(
|
||||
|
||||
superClasses.forEach { superClass ->
|
||||
val mode = fakeOverrideCandidates[superClass] ?: compatibilityMode
|
||||
buildFakeOverrideChainsForClass(superClass, mode)
|
||||
haveFakeOverrides.add(superClass)
|
||||
if (buildFakeOverrideChainsForClass(superClass, mode))
|
||||
haveFakeOverrides.add(superClass)
|
||||
}
|
||||
|
||||
if (!platformSpecificClassFilter.needToConstructFakeOverrides(clazz)) return false
|
||||
|
||||
fakeOverrideDeclarationTable.run {
|
||||
inFile(clazz.fileOrNull) {
|
||||
irOverridingUtil.buildFakeOverridesForClass(clazz, compatibilityMode.oldSignatures)
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
override fun linkFunctionFakeOverride(declaration: IrFakeOverrideFunction, compatibilityMode: Boolean) {
|
||||
|
||||
+1
-1
@@ -183,7 +183,7 @@ class IrKlibBytesSource(private val klib: IrLibrary, private val fileIndex: Int)
|
||||
override fun debugInfo(index: Int): ByteArray? = klib.debugInfo(index, fileIndex)
|
||||
}
|
||||
|
||||
internal fun IrLibraryFile.deserializeFqName(fqn: List<Int>): String =
|
||||
fun IrLibraryFile.deserializeFqName(fqn: List<Int>): String =
|
||||
fqn.joinToString(".", transform = ::string)
|
||||
|
||||
fun IrLibraryFile.createFile(module: IrModuleFragment, fileProto: ProtoFile): IrFile {
|
||||
|
||||
Reference in New Issue
Block a user