[JVM IR] Fix plugin API for JVM IR

- Unmute ktx.serialization test
This commit is contained in:
Roman Artemev
2020-05-06 18:06:02 +03:00
committed by romanart
parent a794052f86
commit 6bdd473eff
3 changed files with 76 additions and 72 deletions
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.backend.jvm
import org.jetbrains.kotlin.backend.common.CodegenUtil
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
import org.jetbrains.kotlin.backend.common.ir.BuiltinSymbolsBase
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
import org.jetbrains.kotlin.backend.jvm.codegen.ClassCodegen
import org.jetbrains.kotlin.backend.jvm.lower.MultifileFacadeFileEntry
@@ -53,20 +54,24 @@ object JvmBackendFacade {
mangler
)
val pluginContext by lazy {
psi2irContext.run {
val symbols = BuiltinSymbolsBase(irBuiltIns, moduleDescriptor.builtIns, symbolTable.lazyWrapper)
IrPluginContext(
moduleDescriptor, bindingContext, languageVersionSettings, symbolTable, typeTranslator, irBuiltIns, irLinker, symbols
)
}
}
for (extension in pluginExtensions) {
psi2ir.addPostprocessingStep { module ->
extension.generate(
module,
IrPluginContext(
psi2irContext.moduleDescriptor,
psi2irContext.bindingContext,
psi2irContext.languageVersionSettings,
psi2irContext.symbolTable,
psi2irContext.typeTranslator,
psi2irContext.irBuiltIns,
linker = irLinker
)
)
val old = stubGenerator.unboundSymbolGeneration
try {
stubGenerator.unboundSymbolGeneration = true
extension.generate(module, pluginContext)
} finally {
stubGenerator.unboundSymbolGeneration = old
}
}
}
@@ -8,6 +8,23 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
DUP
INVOKESPECIAL (ListOfUsers$$serializer, <init>, ()V)
PUTSTATIC (INSTANCE, LListOfUsers$$serializer;)
LABEL (L0)
LINENUMBER (12)
NEW
DUP
LDC (ListOfUsers)
GETSTATIC (INSTANCE, LListOfUsers$$serializer;)
CHECKCAST
ICONST_1
INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, <init>, (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V)
ASTORE (0)
ALOAD (0)
LDC (list)
ICONST_0
INVOKEVIRTUAL (kotlinx/serialization/internal/SerialClassDescImpl, addElement, (Ljava/lang/String;Z)V)
ALOAD (0)
CHECKCAST
PUTSTATIC (descriptor, Lkotlinx/serialization/SerialDescriptor;)
RETURN
}
@@ -17,21 +34,6 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
LABEL (L1)
LINENUMBER (12)
INVOKESPECIAL (java/lang/Object, <init>, ()V)
NEW
DUP
LDC (ListOfUsers)
ALOAD (0)
CHECKCAST
ICONST_1
INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, <init>, (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V)
ASTORE (1)
ALOAD (1)
LDC (list)
ICONST_0
INVOKEVIRTUAL (kotlinx/serialization/internal/SerialClassDescImpl, addElement, (Ljava/lang/String;Z)V)
ALOAD (1)
CHECKCAST
PUTSTATIC (descriptor, Lkotlinx/serialization/SerialDescriptor;)
RETURN
LABEL (L2)
}
@@ -203,10 +205,8 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
ALOAD (4)
ALOAD (3)
INVOKEINTERFACE (kotlinx/serialization/CompositeEncoder, endStructure, (Lkotlinx/serialization/SerialDescriptor;)V)
LABEL (L2)
LINENUMBER (13)
RETURN
LABEL (L3)
LABEL (L2)
}
public void serialize(kotlinx.serialization.Encoder encoder, java.lang.Object value) {
@@ -317,6 +317,23 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
DUP
INVOKESPECIAL (OptionalUser$$serializer, <init>, ()V)
PUTSTATIC (INSTANCE, LOptionalUser$$serializer;)
LABEL (L0)
LINENUMBER (9)
NEW
DUP
LDC (OptionalUser)
GETSTATIC (INSTANCE, LOptionalUser$$serializer;)
CHECKCAST
ICONST_1
INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, <init>, (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V)
ASTORE (0)
ALOAD (0)
LDC (user)
ICONST_1
INVOKEVIRTUAL (kotlinx/serialization/internal/SerialClassDescImpl, addElement, (Ljava/lang/String;Z)V)
ALOAD (0)
CHECKCAST
PUTSTATIC (descriptor, Lkotlinx/serialization/SerialDescriptor;)
RETURN
}
@@ -326,21 +343,6 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
LABEL (L1)
LINENUMBER (9)
INVOKESPECIAL (java/lang/Object, <init>, ()V)
NEW
DUP
LDC (OptionalUser)
ALOAD (0)
CHECKCAST
ICONST_1
INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, <init>, (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V)
ASTORE (1)
ALOAD (1)
LDC (user)
ICONST_1
INVOKEVIRTUAL (kotlinx/serialization/internal/SerialClassDescImpl, addElement, (Ljava/lang/String;Z)V)
ALOAD (1)
CHECKCAST
PUTSTATIC (descriptor, Lkotlinx/serialization/SerialDescriptor;)
RETURN
LABEL (L2)
}
@@ -519,10 +521,8 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
ALOAD (4)
ALOAD (3)
INVOKEINTERFACE (kotlinx/serialization/CompositeEncoder, endStructure, (Lkotlinx/serialization/SerialDescriptor;)V)
LABEL (L7)
LINENUMBER (10)
RETURN
LABEL (L8)
LABEL (L7)
}
public void serialize(kotlinx.serialization.Encoder encoder, java.lang.Object value) {
@@ -670,6 +670,27 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
DUP
INVOKESPECIAL (User$$serializer, <init>, ()V)
PUTSTATIC (INSTANCE, LUser$$serializer;)
LABEL (L0)
LINENUMBER (6)
NEW
DUP
LDC (User)
GETSTATIC (INSTANCE, LUser$$serializer;)
CHECKCAST
ICONST_2
INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, <init>, (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V)
ASTORE (0)
ALOAD (0)
LDC (firstName)
ICONST_0
INVOKEVIRTUAL (kotlinx/serialization/internal/SerialClassDescImpl, addElement, (Ljava/lang/String;Z)V)
ALOAD (0)
LDC (lastName)
ICONST_0
INVOKEVIRTUAL (kotlinx/serialization/internal/SerialClassDescImpl, addElement, (Ljava/lang/String;Z)V)
ALOAD (0)
CHECKCAST
PUTSTATIC (descriptor, Lkotlinx/serialization/SerialDescriptor;)
RETURN
}
@@ -679,25 +700,6 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
LABEL (L1)
LINENUMBER (6)
INVOKESPECIAL (java/lang/Object, <init>, ()V)
NEW
DUP
LDC (User)
ALOAD (0)
CHECKCAST
ICONST_2
INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, <init>, (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V)
ASTORE (1)
ALOAD (1)
LDC (firstName)
ICONST_0
INVOKEVIRTUAL (kotlinx/serialization/internal/SerialClassDescImpl, addElement, (Ljava/lang/String;Z)V)
ALOAD (1)
LDC (lastName)
ICONST_0
INVOKEVIRTUAL (kotlinx/serialization/internal/SerialClassDescImpl, addElement, (Ljava/lang/String;Z)V)
ALOAD (1)
CHECKCAST
PUTSTATIC (descriptor, Lkotlinx/serialization/SerialDescriptor;)
RETURN
LABEL (L2)
}
@@ -878,10 +880,8 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
ALOAD (4)
ALOAD (3)
INVOKEINTERFACE (kotlinx/serialization/CompositeEncoder, endStructure, (Lkotlinx/serialization/SerialDescriptor;)V)
LABEL (L2)
LINENUMBER (7)
RETURN
LABEL (L3)
LABEL (L2)
}
public void serialize(kotlinx.serialization.Encoder encoder, java.lang.Object value) {
@@ -1008,4 +1008,4 @@ public final class User : java/lang/Object {
public final java.lang.String getFirstName()
public final java.lang.String getLastName()
}
}
-1
View File
@@ -52,7 +52,6 @@ org.jetbrains.kotlin.psi.injection.StringInterpolationInjectionTest.testInterpol
org.jetbrains.kotlin.nj2k.NewJavaToKotlinConverterSingleFileTestGenerated.Issues.testKt_8170, KT-36459,,
org.jetbrains.kotlin.shortenRefs.ShortenRefsTestGenerated.testExtensionForObject2, Always red,,
org.jetbrains.kotlin.util.KotlinVersionsTest.testVersionsAreConsistent, KT-35567,,
org.jetbrains.kotlinx.serialization.SerializationIrBytecodeListingTestGenerated.testBasic, wait until new serialization runtime version will be publicly available,,
org.jetbrains.kotlin.jvm.compiler.CompileKotlinAgainstJavaTestGenerated.WithAPT.testClassWithTypeParameter, KT-36448,,
org.jetbrains.kotlin.jvm.compiler.CompileKotlinAgainstJavaTestGenerated.WithoutAPT.testClassWithTypeParameter, KT-36448,,
org.jetbrains.kotlin.idea.debugger.test.AsyncStackTraceTestGenerated.testAllFilesPresentInAsyncStackTrace, redesign test AsyncStackTraces,,
1 Test key Issue State (optional: MUTE or FAIL) Status (optional: FLAKY)
52 org.jetbrains.kotlin.nj2k.NewJavaToKotlinConverterSingleFileTestGenerated.Issues.testKt_8170 KT-36459
53 org.jetbrains.kotlin.shortenRefs.ShortenRefsTestGenerated.testExtensionForObject2 Always red
54 org.jetbrains.kotlin.util.KotlinVersionsTest.testVersionsAreConsistent KT-35567
org.jetbrains.kotlinx.serialization.SerializationIrBytecodeListingTestGenerated.testBasic wait until new serialization runtime version will be publicly available
55 org.jetbrains.kotlin.jvm.compiler.CompileKotlinAgainstJavaTestGenerated.WithAPT.testClassWithTypeParameter KT-36448
56 org.jetbrains.kotlin.jvm.compiler.CompileKotlinAgainstJavaTestGenerated.WithoutAPT.testClassWithTypeParameter KT-36448
57 org.jetbrains.kotlin.idea.debugger.test.AsyncStackTraceTestGenerated.testAllFilesPresentInAsyncStackTrace redesign test AsyncStackTraces