Use type table in DescriptorSerializer, add switch to enable/disable, test
This commit is contained in:
@@ -222,7 +222,9 @@ public class ClosureCodegen extends MemberCodegen<JetElement> {
|
||||
writeKotlinSyntheticClassAnnotation(v, state);
|
||||
|
||||
DescriptorSerializer serializer =
|
||||
DescriptorSerializer.createTopLevel(new JvmSerializerExtension(v.getSerializationBindings(), typeMapper));
|
||||
DescriptorSerializer.createForLambda(
|
||||
new JvmSerializerExtension(v.getSerializationBindings(), typeMapper, state.getUseTypeTableInSerializer())
|
||||
);
|
||||
|
||||
ProtoBuf.Function functionProto = serializer.functionProto(funDescriptor).build();
|
||||
|
||||
|
||||
@@ -256,7 +256,9 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
||||
}
|
||||
|
||||
DescriptorSerializer serializer =
|
||||
DescriptorSerializer.create(descriptor, new JvmSerializerExtension(v.getSerializationBindings(), typeMapper));
|
||||
DescriptorSerializer.create(descriptor, new JvmSerializerExtension(
|
||||
v.getSerializationBindings(), typeMapper, state.getUseTypeTableInSerializer()
|
||||
));
|
||||
|
||||
ProtoBuf.Class classProto = serializer.classProto(descriptor).build();
|
||||
|
||||
|
||||
@@ -85,7 +85,9 @@ public class MultifileClassPartCodegen(
|
||||
|
||||
val bindings = v.serializationBindings
|
||||
|
||||
val serializer = DescriptorSerializer.createTopLevel(JvmSerializerExtension(bindings, state.typeMapper))
|
||||
val serializer = DescriptorSerializer.createTopLevel(
|
||||
JvmSerializerExtension(bindings, state.typeMapper, state.useTypeTableInSerializer)
|
||||
)
|
||||
val packageProto = serializer.packagePartProto(members).build()
|
||||
|
||||
val av = v.newAnnotation(AsmUtil.asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_MULTIFILE_CLASS_PART), true)
|
||||
|
||||
@@ -270,7 +270,9 @@ public class PackageCodegen {
|
||||
if (file.isScript()) return;
|
||||
}
|
||||
|
||||
DescriptorSerializer serializer = DescriptorSerializer.createTopLevel(new JvmSerializerExtension(bindings, state.getTypeMapper()));
|
||||
DescriptorSerializer serializer = DescriptorSerializer.createTopLevel(new JvmSerializerExtension(
|
||||
bindings, state.getTypeMapper(), state.getUseTypeTableInSerializer()
|
||||
));
|
||||
Collection<PackageFragmentDescriptor> packageFragments = Lists.newArrayList();
|
||||
ContainerUtil.addIfNotNull(packageFragments, packageFragment);
|
||||
ContainerUtil.addIfNotNull(packageFragments, compiledPackageFragment);
|
||||
|
||||
@@ -121,7 +121,9 @@ public class PackagePartCodegen extends MemberCodegen<JetFile> {
|
||||
|
||||
JvmSerializationBindings bindings = v.getSerializationBindings();
|
||||
|
||||
DescriptorSerializer serializer = DescriptorSerializer.createTopLevel(new JvmSerializerExtension(bindings, state.getTypeMapper()));
|
||||
DescriptorSerializer serializer = DescriptorSerializer.createTopLevel(new JvmSerializerExtension(
|
||||
bindings, state.getTypeMapper(), state.getUseTypeTableInSerializer()
|
||||
));
|
||||
ProtoBuf.Package packageProto = serializer.packagePartProto(members).build();
|
||||
|
||||
AnnotationVisitor av = v.newAnnotation(asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_FILE_FACADE), true);
|
||||
|
||||
+8
-1
@@ -42,11 +42,13 @@ public class JvmSerializerExtension extends SerializerExtension {
|
||||
private final JvmSerializationBindings bindings;
|
||||
private final StringTable stringTable;
|
||||
private final AnnotationSerializer annotationSerializer;
|
||||
private final boolean useTypeTable;
|
||||
|
||||
public JvmSerializerExtension(@NotNull JvmSerializationBindings bindings, @NotNull JetTypeMapper typeMapper) {
|
||||
public JvmSerializerExtension(@NotNull JvmSerializationBindings bindings, @NotNull JetTypeMapper typeMapper, boolean useTypeTable) {
|
||||
this.bindings = bindings;
|
||||
this.stringTable = new JvmStringTable(typeMapper);
|
||||
this.annotationSerializer = new AnnotationSerializer(stringTable);
|
||||
this.useTypeTable = useTypeTable;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -55,6 +57,11 @@ public class JvmSerializerExtension extends SerializerExtension {
|
||||
return stringTable;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldUseTypeTable() {
|
||||
return useTypeTable;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serializeClass(@NotNull ClassDescriptor descriptor, @NotNull ProtoBuf.Class.Builder proto) {
|
||||
AnnotationDescriptor annotation = descriptor.getAnnotations().findAnnotation(KotlinBuiltIns.FQ_NAMES.annotation);
|
||||
|
||||
@@ -52,6 +52,7 @@ public class GenerationState @JvmOverloads constructor(
|
||||
public val generateDeclaredClassFilter: GenerationState.GenerateClassFilter = GenerationState.GenerateClassFilter.GENERATE_ALL,
|
||||
disableInline: Boolean = false,
|
||||
disableOptimization: Boolean = false,
|
||||
public val useTypeTableInSerializer: Boolean = false,
|
||||
public val packageFacadesAsMultifileClasses: Boolean = false,
|
||||
public val diagnostics: DiagnosticSink = DiagnosticSink.DO_NOTHING,
|
||||
public val packagesWithObsoleteParts: Collection<FqName> = emptySet(),
|
||||
|
||||
Reference in New Issue
Block a user