Determine more precise conditions when to enable serialization intrinsic
Disable it if we do not have required `noCompiledSerializer` function in runtime. Leave it enabled in tests. Rollback some changes for old backend as it is unsupported now.
This commit is contained in:
+3
-3
@@ -44,7 +44,7 @@ class IrInlineIntrinsicsSupport(
|
||||
get() = classCodegen.context.state
|
||||
|
||||
private val pluginExtensions = IrGenerationExtension.getInstances(classCodegen.context.state.project)
|
||||
.mapNotNull { it.getPlatformIntrinsicExtension() as? JvmIrIntrinsicExtension }
|
||||
.mapNotNull { it.getPlatformIntrinsicExtension(classCodegen.context) as? JvmIrIntrinsicExtension }
|
||||
|
||||
override fun putClassInstance(v: InstructionAdapter, type: IrType) {
|
||||
ExpressionCodegen.generateClassInstance(v, type, classCodegen.typeMapper, wrapPrimitives = false)
|
||||
@@ -127,7 +127,7 @@ class IrInlineIntrinsicsSupport(
|
||||
.report(JvmBackendErrors.TYPEOF_NON_REIFIED_TYPE_PARAMETER_WITH_RECURSIVE_BOUND, typeParameterName.asString())
|
||||
}
|
||||
|
||||
override fun rewritePluginDefinedOperationMarker(v: InstructionAdapter, next: AbstractInsnNode, instructions: InsnList, type: IrType): Boolean {
|
||||
return pluginExtensions.any { it.rewritePluginDefinedOperationMarker(v, next, instructions, type, classCodegen.context) }
|
||||
override fun rewritePluginDefinedOperationMarker(v: InstructionAdapter, stubConstNull: AbstractInsnNode, instructions: InsnList, type: IrType): Boolean {
|
||||
return pluginExtensions.any { it.rewritePluginDefinedOperationMarker(v, stubConstNull, instructions, type) }
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -6,7 +6,6 @@
|
||||
package org.jetbrains.kotlin.backend.jvm.codegen
|
||||
|
||||
import org.jetbrains.kotlin.backend.common.extensions.IrIntrinsicExtension
|
||||
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
||||
import org.jetbrains.kotlin.backend.jvm.intrinsics.IntrinsicMethod
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
@@ -20,12 +19,13 @@ interface JvmIrIntrinsicExtension : IrIntrinsicExtension {
|
||||
/**
|
||||
* Should return `true` if marker was processed.
|
||||
* If this method returns `false`, a regular `TYPE_OF` intrinsic would be inserted.
|
||||
*
|
||||
* This is plugin's responsibility to remove any calls to MagicApiIntrinsics.voidMagicApiCall and its arguments.
|
||||
*/
|
||||
fun rewritePluginDefinedOperationMarker(
|
||||
v: InstructionAdapter,
|
||||
next: AbstractInsnNode,
|
||||
stubConstNull: AbstractInsnNode,
|
||||
instructions: InsnList,
|
||||
type: IrType,
|
||||
jvmBackendContext: JvmBackendContext
|
||||
type: IrType
|
||||
): Boolean
|
||||
}
|
||||
Reference in New Issue
Block a user