Introduce support for plugin-defined intrinsics in old JVM backend:

(Old is created first because all intrinsics emit bytecode anyway)

Provide intrinsic for serializer<T>() function so it won't
invoke typeOf() construction and KType->KSerializer conversion
making it fast and truly reflectionless

Add support for recalculating stack size in plugin-defined intrinsics
since it is needed for correct work:
Unify method for recalculating stack size with existing typeOf intrinsic

Add testdata for IR for future intrinsic in IR
This commit is contained in:
Leonid Startsev
2020-04-10 17:57:21 +03:00
committed by Space
parent 842f94443a
commit f9edbd825a
15 changed files with 1114 additions and 98 deletions
@@ -37,6 +37,12 @@ public class SerializationAsmLikeInstructionsListingTestGenerated extends Abstra
runTest("plugins/kotlinx-serialization/testData/codegen/Delegated.kt");
}
@Test
@TestMetadata("Intrinsics.kt")
public void testIntrinsics() throws Exception {
runTest("plugins/kotlinx-serialization/testData/codegen/Intrinsics.kt");
}
@Test
@TestMetadata("Sealed.kt")
public void testSealed() throws Exception {
@@ -37,6 +37,12 @@ public class SerializationIrAsmLikeInstructionsListingTestGenerated extends Abst
runTest("plugins/kotlinx-serialization/testData/codegen/Delegated.kt");
}
@Test
@TestMetadata("Intrinsics.kt")
public void testIntrinsics() throws Exception {
runTest("plugins/kotlinx-serialization/testData/codegen/Intrinsics.kt");
}
@Test
@TestMetadata("Sealed.kt")
public void testSealed() throws Exception {