IR: IrMemberWithContainerSource

This commit is contained in:
Georgy Bronnikov
2020-11-27 11:29:02 +03:00
parent 14b773c1fd
commit c0cd9064d7
7 changed files with 16 additions and 23 deletions
@@ -272,7 +272,7 @@ abstract class InlineCodegen<out T : BaseExpressionCodegen>(
abstract fun extractDefaultLambdas(node: MethodNode): List<DefaultLambda>
abstract fun isLoadedFromBytecode(memberDescriptor: CallableMemberDescriptor): Boolean
abstract fun descriptorIsDeserialized(memberDescriptor: CallableMemberDescriptor): Boolean
fun generateAndInsertFinallyBlocks(
intoNode: MethodNode,
@@ -528,7 +528,7 @@ abstract class InlineCodegen<out T : BaseExpressionCodegen>(
mangleSuspendInlineFunctionAsmMethodIfNeeded(functionDescriptor, jvmSignature.asmMethod)
val directMember = getDirectMemberAndCallableFromObject(functionDescriptor)
if (!isBuiltInArrayIntrinsic(functionDescriptor) && !isLoadedFromBytecode(directMember)) {
if (!isBuiltInArrayIntrinsic(functionDescriptor) && !descriptorIsDeserialized(directMember)) {
val node = sourceCompiler.doCreateMethodNodeFromSource(functionDescriptor, jvmSignature, callDefault, asmMethod)
node.node.preprocessSuspendMarkers(forInline = true, keepFakeContinuation = false)
return node
@@ -211,6 +211,6 @@ class PsiInlineCodegen(
)
}
override fun isLoadedFromBytecode(memberDescriptor: CallableMemberDescriptor): Boolean =
override fun descriptorIsDeserialized(memberDescriptor: CallableMemberDescriptor): Boolean =
memberDescriptor is DescriptorWithContainerSource
}