Implemented caching of child serializers

Resolves Kotlin/kotlinx.serialization#1918

Merge-request: KT-MR-7578
Merged-by: Sergey Shanshin <Sergey.Shanshin@jetbrains.com>
This commit is contained in:
Sergey.Shanshin
2022-11-23 19:53:44 +00:00
committed by Space Team
parent 3e8f7b8ee4
commit 339b152390
11 changed files with 408 additions and 204 deletions
@@ -41,19 +41,18 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
public kotlinx.serialization.KSerializer[] childSerializers() {
LABEL (L0)
LINENUMBER (12)
INVOKESTATIC (ListOfUsers, access$get$childSerializers$cp, ()[Lkotlinx/serialization/KSerializer;)
ASTORE (1)
ICONST_1
ANEWARRAY (kotlinx/serialization/KSerializer)
ASTORE (1)
ASTORE (2)
ALOAD (2)
ICONST_0
ALOAD (1)
ICONST_0
NEW (kotlinx/serialization/internal/ArrayListSerializer)
DUP
GETSTATIC (User$$serializer, INSTANCE, LUser$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, <init>, (Lkotlinx/serialization/KSerializer;)V)
CHECKCAST (kotlinx/serialization/KSerializer)
AALOAD
AASTORE
ALOAD (1)
ALOAD (2)
ARETURN
LABEL (L1)
}
@@ -78,17 +77,17 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
ALOAD (2)
INVOKEINTERFACE (kotlinx/serialization/encoding/Decoder, beginStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)Lkotlinx/serialization/encoding/CompositeDecoder;)
ASTORE (7)
INVOKESTATIC (ListOfUsers, access$get$childSerializers$cp, ()[Lkotlinx/serialization/KSerializer;)
ASTORE (8)
ALOAD (7)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSequentially, ()Z)
IFEQ (L2)
ALOAD (7)
ALOAD (2)
ICONST_0
NEW (kotlinx/serialization/internal/ArrayListSerializer)
DUP
GETSTATIC (User$$serializer, INSTANCE, LUser$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, <init>, (Lkotlinx/serialization/KSerializer;)V)
ALOAD (8)
ICONST_0
AALOAD
CHECKCAST (kotlinx/serialization/DeserializationStrategy)
ALOAD (6)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;)
@@ -118,11 +117,9 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
ALOAD (7)
ALOAD (2)
ICONST_0
NEW (kotlinx/serialization/internal/ArrayListSerializer)
DUP
GETSTATIC (User$$serializer, INSTANCE, LUser$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, <init>, (Lkotlinx/serialization/KSerializer;)V)
ALOAD (8)
ICONST_0
AALOAD
CHECKCAST (kotlinx/serialization/DeserializationStrategy)
ALOAD (6)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;)
@@ -237,6 +234,8 @@ public final class ListOfUsers$Companion : java/lang/Object {
}
public final class ListOfUsers : java/lang/Object {
private final static kotlinx.serialization.KSerializer[] $childSerializers
public final static ListOfUsers$Companion Companion
private final java.util.List list
@@ -247,6 +246,24 @@ public final class ListOfUsers : java/lang/Object {
ACONST_NULL
INVOKESPECIAL (ListOfUsers$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
PUTSTATIC (ListOfUsers, Companion, LListOfUsers$Companion;)
LABEL (L0)
LINENUMBER (12)
ICONST_1
ANEWARRAY (kotlinx/serialization/KSerializer)
ASTORE (0)
ALOAD (0)
ICONST_0
NEW (kotlinx/serialization/internal/ArrayListSerializer)
DUP
GETSTATIC (User$$serializer, INSTANCE, LUser$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, <init>, (Lkotlinx/serialization/KSerializer;)V)
CHECKCAST (kotlinx/serialization/KSerializer)
AASTORE
ALOAD (0)
PUTSTATIC (ListOfUsers, $childSerializers, [Lkotlinx/serialization/KSerializer;)
LABEL (L1)
LINENUMBER (13)
RETURN
}
@@ -291,19 +308,21 @@ public final class ListOfUsers : java/lang/Object {
LABEL (L2)
}
public final static kotlinx.serialization.KSerializer[] access$get$childSerializers$cp()
public final java.util.List getList()
public final static void write$Self(ListOfUsers self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) {
LABEL (L0)
LINENUMBER (12)
GETSTATIC (ListOfUsers, $childSerializers, [Lkotlinx/serialization/KSerializer;)
ASTORE (3)
ALOAD (1)
ALOAD (2)
ICONST_0
NEW (kotlinx/serialization/internal/ArrayListSerializer)
DUP
GETSTATIC (User$$serializer, INSTANCE, LUser$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, <init>, (Lkotlinx/serialization/KSerializer;)V)
ALOAD (3)
ICONST_0
AALOAD
CHECKCAST (kotlinx/serialization/SerializationStrategy)
ALOAD (0)
GETFIELD (ListOfUsers, list, Ljava/util/List;)
@@ -29,8 +29,6 @@ public final class Box$Companion : java/lang/Object {
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker)
private final kotlinx.serialization.descriptors.SerialDescriptor get$cachedDescriptor()
public final kotlinx.serialization.KSerializer serializer(kotlinx.serialization.KSerializer typeSerial0)
}
@@ -47,8 +45,6 @@ public final class Box : java/lang/Object {
public void <init>(int seen1, java.lang.Object boxed, kotlinx.serialization.internal.SerializationConstructorMarker serializationConstructorMarker)
public final static kotlinx.serialization.descriptors.SerialDescriptor access$get$cachedDescriptor$cp()
public final java.lang.Object component1()
public final Box copy(java.lang.Object boxed)
@@ -191,8 +187,8 @@ public final class IntrinsicsKt : java/lang/Object {
}
}
final class SerializableObject$$cachedSerializer$delegate$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function0 {
public final static SerializableObject$$cachedSerializer$delegate$1 INSTANCE
final class SerializableObject$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function0 {
public final static SerializableObject$1 INSTANCE
static void <clinit>()
@@ -212,7 +208,7 @@ public final class SerializableObject : java/lang/Object {
private void <init>()
private final kotlin.Lazy get$cachedSerializer$delegate()
private final kotlinx.serialization.KSerializer get$cachedSerializer()
public final kotlinx.serialization.KSerializer serializer()
}
@@ -41,15 +41,18 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati
public kotlinx.serialization.KSerializer[] childSerializers() {
LABEL (L0)
LINENUMBER (18)
INVOKESTATIC (Container, access$get$childSerializers$cp, ()[Lkotlinx/serialization/KSerializer;)
ASTORE (1)
ICONST_1
ANEWARRAY (kotlinx/serialization/KSerializer)
ASTORE (1)
ASTORE (2)
ALOAD (2)
ICONST_0
ALOAD (1)
ICONST_0
GETSTATIC (Result, Companion, LResult$Companion;)
INVOKEVIRTUAL (Result$Companion, serializer, ()Lkotlinx/serialization/KSerializer;)
AALOAD
AASTORE
ALOAD (1)
ALOAD (2)
ARETURN
LABEL (L1)
}
@@ -74,14 +77,17 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati
ALOAD (2)
INVOKEINTERFACE (kotlinx/serialization/encoding/Decoder, beginStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)Lkotlinx/serialization/encoding/CompositeDecoder;)
ASTORE (7)
INVOKESTATIC (Container, access$get$childSerializers$cp, ()[Lkotlinx/serialization/KSerializer;)
ASTORE (8)
ALOAD (7)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSequentially, ()Z)
IFEQ (L2)
ALOAD (7)
ALOAD (2)
ICONST_0
GETSTATIC (Result, Companion, LResult$Companion;)
INVOKEVIRTUAL (Result$Companion, serializer, ()Lkotlinx/serialization/KSerializer;)
ALOAD (8)
ICONST_0
AALOAD
CHECKCAST (kotlinx/serialization/DeserializationStrategy)
ALOAD (6)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;)
@@ -111,8 +117,9 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati
ALOAD (7)
ALOAD (2)
ICONST_0
GETSTATIC (Result, Companion, LResult$Companion;)
INVOKEVIRTUAL (Result$Companion, serializer, ()Lkotlinx/serialization/KSerializer;)
ALOAD (8)
ICONST_0
AALOAD
CHECKCAST (kotlinx/serialization/DeserializationStrategy)
ALOAD (6)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;)
@@ -191,6 +198,8 @@ public final class Container$Companion : java/lang/Object {
}
public final class Container : java/lang/Object {
private final static kotlinx.serialization.KSerializer[] $childSerializers
public final static Container$Companion Companion
private final Result r
@@ -201,6 +210,20 @@ public final class Container : java/lang/Object {
ACONST_NULL
INVOKESPECIAL (Container$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
PUTSTATIC (Container, Companion, LContainer$Companion;)
LABEL (L0)
LINENUMBER (18)
ICONST_1
ANEWARRAY (kotlinx/serialization/KSerializer)
ASTORE (0)
ALOAD (0)
ICONST_0
GETSTATIC (Result, Companion, LResult$Companion;)
INVOKEVIRTUAL (Result$Companion, serializer, ()Lkotlinx/serialization/KSerializer;)
AASTORE
ALOAD (0)
PUTSTATIC (Container, $childSerializers, [Lkotlinx/serialization/KSerializer;)
LABEL (L1)
LINENUMBER (19)
RETURN
}
@@ -245,16 +268,21 @@ public final class Container : java/lang/Object {
LABEL (L2)
}
public final static kotlinx.serialization.KSerializer[] access$get$childSerializers$cp()
public final Result getR()
public final static void write$Self(Container self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) {
LABEL (L0)
LINENUMBER (18)
GETSTATIC (Container, $childSerializers, [Lkotlinx/serialization/KSerializer;)
ASTORE (3)
ALOAD (1)
ALOAD (2)
ICONST_0
GETSTATIC (Result, Companion, LResult$Companion;)
INVOKEVIRTUAL (Result$Companion, serializer, ()Lkotlinx/serialization/KSerializer;)
ALOAD (3)
ICONST_0
AALOAD
CHECKCAST (kotlinx/serialization/SerializationStrategy)
ALOAD (0)
GETFIELD (Container, r, LResult;)
@@ -264,14 +292,14 @@ public final class Container : java/lang/Object {
}
}
final class Result$Companion$$cachedSerializer$delegate$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function0 {
public final static Result$Companion$$cachedSerializer$delegate$1 INSTANCE
final class Result$Companion$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function0 {
public final static Result$Companion$1 INSTANCE
static void <clinit>() {
NEW (Result$Companion$$cachedSerializer$delegate$1)
NEW (Result$Companion$1)
DUP
INVOKESPECIAL (Result$Companion$$cachedSerializer$delegate$1, <init>, ()V)
PUTSTATIC (Result$Companion$$cachedSerializer$delegate$1, INSTANCE, LResult$Companion$$cachedSerializer$delegate$1;)
INVOKESPECIAL (Result$Companion$1, <init>, ()V)
PUTSTATIC (Result$Companion$1, INSTANCE, LResult$Companion$1;)
RETURN
}
@@ -338,7 +366,7 @@ final class Result$Companion$$cachedSerializer$delegate$1 : kotlin/jvm/internal/
LABEL (L0)
LINENUMBER (12)
ALOAD (0)
INVOKEVIRTUAL (Result$Companion$$cachedSerializer$delegate$1, invoke, ()Lkotlinx/serialization/KSerializer;)
INVOKEVIRTUAL (Result$Companion$1, invoke, ()Lkotlinx/serialization/KSerializer;)
ARETURN
LABEL (L1)
}
@@ -362,28 +390,26 @@ public final class Result$Companion : java/lang/Object {
LABEL (L1)
}
private final kotlin.Lazy get$cachedSerializer$delegate()
private final kotlinx.serialization.KSerializer get$cachedSerializer()
public final kotlinx.serialization.KSerializer serializer() {
LABEL (L0)
LINENUMBER (12)
ALOAD (0)
INVOKESPECIAL (Result$Companion, get$cachedSerializer$delegate, ()Lkotlin/Lazy;)
INVOKEINTERFACE (kotlin/Lazy, getValue, ()Ljava/lang/Object;)
CHECKCAST (kotlinx/serialization/KSerializer)
INVOKESPECIAL (Result$Companion, get$cachedSerializer, ()Lkotlinx/serialization/KSerializer;)
ARETURN
LABEL (L1)
}
}
final class Result$Err$$cachedSerializer$delegate$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function0 {
public final static Result$Err$$cachedSerializer$delegate$1 INSTANCE
final class Result$Err$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function0 {
public final static Result$Err$1 INSTANCE
static void <clinit>() {
NEW (Result$Err$$cachedSerializer$delegate$1)
NEW (Result$Err$1)
DUP
INVOKESPECIAL (Result$Err$$cachedSerializer$delegate$1, <init>, ()V)
PUTSTATIC (Result$Err$$cachedSerializer$delegate$1, INSTANCE, LResult$Err$$cachedSerializer$delegate$1;)
INVOKESPECIAL (Result$Err$1, <init>, ()V)
PUTSTATIC (Result$Err$1, INSTANCE, LResult$Err$1;)
RETURN
}
@@ -415,7 +441,7 @@ final class Result$Err$$cachedSerializer$delegate$1 : kotlin/jvm/internal/Lambda
LABEL (L0)
LINENUMBER (15)
ALOAD (0)
INVOKEVIRTUAL (Result$Err$$cachedSerializer$delegate$1, invoke, ()Lkotlinx/serialization/KSerializer;)
INVOKEVIRTUAL (Result$Err$1, invoke, ()Lkotlinx/serialization/KSerializer;)
ARETURN
LABEL (L1)
}
@@ -434,7 +460,7 @@ public final class Result$Err : Result {
LABEL (L0)
LINENUMBER (15)
GETSTATIC (kotlin/LazyThreadSafetyMode, PUBLICATION, Lkotlin/LazyThreadSafetyMode;)
GETSTATIC (Result$Err$$cachedSerializer$delegate$1, INSTANCE, LResult$Err$$cachedSerializer$delegate$1;)
GETSTATIC (Result$Err$1, INSTANCE, LResult$Err$1;)
CHECKCAST (kotlin/jvm/functions/Function0)
INVOKESTATIC (kotlin/LazyKt, lazy, (Lkotlin/LazyThreadSafetyMode;Lkotlin/jvm/functions/Function0;)Lkotlin/Lazy;)
PUTSTATIC (Result$Err, $cachedSerializer$delegate, Lkotlin/Lazy;)
@@ -451,15 +477,13 @@ public final class Result$Err : Result {
LABEL (L1)
}
private final kotlin.Lazy get$cachedSerializer$delegate()
private final kotlinx.serialization.KSerializer get$cachedSerializer()
public final kotlinx.serialization.KSerializer serializer() {
LABEL (L0)
LINENUMBER (15)
ALOAD (0)
INVOKESPECIAL (Result$Err, get$cachedSerializer$delegate, ()Lkotlin/Lazy;)
INVOKEINTERFACE (kotlin/Lazy, getValue, ()Ljava/lang/Object;)
CHECKCAST (kotlinx/serialization/KSerializer)
INVOKESPECIAL (Result$Err, get$cachedSerializer, ()Lkotlinx/serialization/KSerializer;)
ARETURN
LABEL (L1)
}
@@ -737,10 +761,12 @@ public abstract class Result : java/lang/Object, X {
LABEL (L0)
LINENUMBER (12)
GETSTATIC (kotlin/LazyThreadSafetyMode, PUBLICATION, Lkotlin/LazyThreadSafetyMode;)
GETSTATIC (Result$Companion$$cachedSerializer$delegate$1, INSTANCE, LResult$Companion$$cachedSerializer$delegate$1;)
GETSTATIC (Result$Companion$1, INSTANCE, LResult$Companion$1;)
CHECKCAST (kotlin/jvm/functions/Function0)
INVOKESTATIC (kotlin/LazyKt, lazy, (Lkotlin/LazyThreadSafetyMode;Lkotlin/jvm/functions/Function0;)Lkotlin/Lazy;)
PUTSTATIC (Result, $cachedSerializer$delegate, Lkotlin/Lazy;)
LABEL (L1)
LINENUMBER (16)
RETURN
}