[Native][IR] Partial linkage support for cached inline functions
- Support partial linkage for declarations from inline functions that are lazily deserialized from a KLIB with static cache - Linker API: Split IrModuleDeserializer.deserializeIrSymbol() into deserializeIrSymbolOrFail() and tryDeserializeIrSymbol() - Linker API: Refactor KotlinIrLinker.handleSignatureIdNotFoundInModuleWithDependencies() to deserializeOrReturnUnboundIrSymbolIfPartialLinkageEnabled() ^KT-52478
This commit is contained in:
+5
-5
@@ -134,12 +134,10 @@ class JvmIrLinker(
|
||||
DescriptorByIdSignatureFinderImpl.LookupMode.MODULE_ONLY
|
||||
)
|
||||
|
||||
private fun resolveDescriptor(idSig: IdSignature): DeclarationDescriptor {
|
||||
return descriptorFinder.findDescriptorBySignature(idSig) ?: error("No descriptor found for $idSig")
|
||||
}
|
||||
private fun resolveDescriptor(idSig: IdSignature): DeclarationDescriptor? = descriptorFinder.findDescriptorBySignature(idSig)
|
||||
|
||||
override fun deserializeIrSymbol(idSig: IdSignature, symbolKind: BinarySymbolData.SymbolKind): IrSymbol {
|
||||
val descriptor = resolveDescriptor(idSig)
|
||||
override fun tryDeserializeIrSymbol(idSig: IdSignature, symbolKind: BinarySymbolData.SymbolKind): IrSymbol? {
|
||||
val descriptor = resolveDescriptor(idSig) ?: return null
|
||||
|
||||
val declaration = stubGenerator.run {
|
||||
when (symbolKind) {
|
||||
@@ -156,6 +154,8 @@ class JvmIrLinker(
|
||||
return declaration.symbol
|
||||
}
|
||||
|
||||
override fun deserializedSymbolNotFound(idSig: IdSignature): Nothing = error("No descriptor found for $idSig")
|
||||
|
||||
override fun declareIrSymbol(symbol: IrSymbol) {
|
||||
if (symbol is IrFieldSymbol) {
|
||||
declareJavaFieldStub(symbol)
|
||||
|
||||
Reference in New Issue
Block a user