Pass actual serializable properties count in the generated code
to SerialClassDescImpl. This is needed to optimize space allocation.
This commit is contained in:
+1
@@ -76,6 +76,7 @@ class SerializerForEnumsGenerator(
|
||||
return irInvoke(
|
||||
null, ctor,
|
||||
irString(serialName),
|
||||
irInt(serializableDescriptor.enumEntries().size),
|
||||
typeHint = ctor.descriptor.returnType.toIrType()
|
||||
)
|
||||
}
|
||||
|
||||
+1
-1
@@ -110,7 +110,7 @@ open class SerializerIrGenerator(val irClass: IrClass, final override val compil
|
||||
val serialClassDescImplCtor = compilerContext.symbolTable.referenceConstructor(serialDescImplConstructor)
|
||||
return irInvoke(
|
||||
null, serialClassDescImplCtor,
|
||||
irString(serialName), if (isGeneratedSerializer) correctThis else irNull()
|
||||
irString(serialName), if (isGeneratedSerializer) correctThis else irNull(), irInt(serializableProperties.size)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -53,7 +53,7 @@ class SerializerForEnumsTranslator(
|
||||
val ctor = serialDescForEnums.unsubstitutedPrimaryConstructor!!
|
||||
return JsNew(
|
||||
context.getInnerReference(ctor),
|
||||
listOf(JsStringLiteral(serialName))
|
||||
listOf(JsStringLiteral(serialName), JsIntLiteral(serializableDescriptor.enumEntries().size))
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -83,7 +83,7 @@ open class SerializerJsTranslator(
|
||||
val serialDescImplConstructor = baseSerialDescImplClass.unsubstitutedPrimaryConstructor!!
|
||||
return JsNew(
|
||||
context.getInnerReference(serialDescImplConstructor),
|
||||
listOf(JsStringLiteral(serialName), if (isGeneratedSerializer) correctThis else JsNullLiteral())
|
||||
listOf(JsStringLiteral(serialName), if (isGeneratedSerializer) correctThis else JsNullLiteral(), JsIntLiteral(serializableProperties.size))
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -110,7 +110,8 @@ open class SerializerCodegenImpl(
|
||||
} else {
|
||||
load(0, serializerAsmType)
|
||||
}
|
||||
invokespecial(descImplType.internalName, "<init>", "(Ljava/lang/String;${generatedSerializerType.descriptor})V", false)
|
||||
aconst(serializableProperties.size)
|
||||
invokespecial(descImplType.internalName, "<init>", "(Ljava/lang/String;${generatedSerializerType.descriptor}I)V", false)
|
||||
}
|
||||
|
||||
protected open fun ExpressionCodegen.addElementsContentToDescriptor(descriptorVar: Int) = with(v) {
|
||||
|
||||
+2
-1
@@ -46,7 +46,8 @@ class SerializerForEnumsCodegen(
|
||||
anew(descriptorForEnumsType)
|
||||
dup()
|
||||
aconst(serialName)
|
||||
invokespecial(descriptorForEnumsType.internalName, "<init>", "(Ljava/lang/String;)V", false)
|
||||
aconst(serializableDescriptor.enumEntries().size)
|
||||
invokespecial(descriptorForEnumsType.internalName, "<init>", "(Ljava/lang/String;I)V", false)
|
||||
checkcast(descImplType)
|
||||
}
|
||||
|
||||
|
||||
+6
-3
@@ -17,7 +17,8 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
|
||||
LDC (ListOfUsers)
|
||||
GETSTATIC (INSTANCE, LListOfUsers$$serializer;)
|
||||
CHECKCAST
|
||||
INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, <init>, (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;)V)
|
||||
LDC (1)
|
||||
INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, <init>, (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V)
|
||||
ASTORE (0)
|
||||
ALOAD (0)
|
||||
LDC (list)
|
||||
@@ -317,7 +318,8 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
|
||||
LDC (OptionalUser)
|
||||
GETSTATIC (INSTANCE, LOptionalUser$$serializer;)
|
||||
CHECKCAST
|
||||
INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, <init>, (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;)V)
|
||||
LDC (1)
|
||||
INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, <init>, (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V)
|
||||
ASTORE (0)
|
||||
ALOAD (0)
|
||||
LDC (user)
|
||||
@@ -659,7 +661,8 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
|
||||
LDC (User)
|
||||
GETSTATIC (INSTANCE, LUser$$serializer;)
|
||||
CHECKCAST
|
||||
INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, <init>, (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;)V)
|
||||
LDC (2)
|
||||
INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, <init>, (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V)
|
||||
ASTORE (0)
|
||||
ALOAD (0)
|
||||
LDC (firstName)
|
||||
|
||||
Reference in New Issue
Block a user