Allow libraries to have empty ir/ component.
This commit is contained in:
committed by
alexander-gorshenev
parent
2736876919
commit
8067ab7034
@@ -43,7 +43,7 @@ interface KonanLibrary {
|
||||
fun packageMetadataParts(fqName: String): Set<String>
|
||||
fun packageMetadata(fqName: String, partName: String): ByteArray
|
||||
|
||||
val irHeader: ByteArray
|
||||
val irHeader: ByteArray?
|
||||
fun irDeclaration(index: Long, isLocal: Boolean): ByteArray
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ interface KonanLibraryLayout {
|
||||
= File(irDir, "hidden_$declarationId.knd")
|
||||
fun visibleDeclarationFile(declarationId: String)
|
||||
= File(irDir, "visible_$declarationId.knd")
|
||||
val wholeIrFile
|
||||
val irHeader
|
||||
get() = File(irDir, "irHeaders.kni")
|
||||
val irIndex: File
|
||||
get() = File(irDir, "uniqIdTableDump.txt")
|
||||
|
||||
@@ -3,6 +3,6 @@ package org.jetbrains.kotlin.konan.library
|
||||
interface MetadataReader {
|
||||
fun loadSerializedModule(libraryLayout: KonanLibraryLayout): ByteArray
|
||||
fun loadSerializedPackageFragment(libraryLayout: KonanLibraryLayout, fqName: String, partName: String): ByteArray
|
||||
fun loadWholeIr(libraryLayout: KonanLibraryLayout): ByteArray
|
||||
fun loadIrHeader(libraryLayout: KonanLibraryLayout): ByteArray
|
||||
fun loadIrDeclaraton(libraryLayout: KonanLibraryLayout, index: Long, isLocal: Boolean): ByteArray
|
||||
}
|
||||
|
||||
+2
-2
@@ -11,8 +11,8 @@ internal object DefaultMetadataReaderImpl : MetadataReader {
|
||||
override fun loadSerializedPackageFragment(libraryLayout: KonanLibraryLayout, fqName: String, partName: String): ByteArray =
|
||||
libraryLayout.packageFragmentFile(fqName, partName).readBytes()
|
||||
|
||||
override fun loadWholeIr(libraryLayout: KonanLibraryLayout): ByteArray =
|
||||
libraryLayout.wholeIrFile.readBytes()
|
||||
override fun loadIrHeader(libraryLayout: KonanLibraryLayout): ByteArray =
|
||||
libraryLayout.irHeader.readBytes()
|
||||
|
||||
override fun loadIrDeclaraton(libraryLayout: KonanLibraryLayout, index: Long, isLocal: Boolean): ByteArray {
|
||||
val name = index.toULong().toString(16)
|
||||
|
||||
+1
-1
@@ -84,7 +84,7 @@ class KonanLibraryImpl(
|
||||
}
|
||||
}
|
||||
|
||||
override val irHeader: ByteArray by lazy { layout.inPlace { metadataReader.loadWholeIr(it) }}
|
||||
override val irHeader: ByteArray? by lazy { layout.inPlace { library -> library.irHeader.let { if (it.exists) metadataReader.loadIrHeader(library) else null }}}
|
||||
|
||||
override fun irDeclaration(index: Long, isLocal: Boolean) = layout.inPlace { metadataReader.loadIrDeclaraton(it, index, isLocal) }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user