From 625c46d5681bb59dbad5624bc835f0ccc775fa8b Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 12 Jan 2016 20:35:50 +0300 Subject: [PATCH] Delete obsolete and unused class_annotation JVM proto extension --- .../serialization/jvm/DebugJvmProtoBuf.java | 30 ++---- .../src/jvm_descriptors.proto | 2 - ...aryClassAnnotationAndConstantLoaderImpl.kt | 13 --- .../kotlin/serialization/jvm/JvmProtoBuf.java | 16 ---- .../classFile/KotlinClsStubBuilder.kt | 11 --- .../jps/incremental/ProtoCompareGenerated.kt | 93 ++++++++----------- .../jps/incremental/protoDifferenceUtils.kt | 3 +- 7 files changed, 46 insertions(+), 122 deletions(-) diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/jvm/DebugJvmProtoBuf.java b/compiler/tests/org/jetbrains/kotlin/serialization/jvm/DebugJvmProtoBuf.java index 998621a521d..013cd945d48 100644 --- a/compiler/tests/org/jetbrains/kotlin/serialization/jvm/DebugJvmProtoBuf.java +++ b/compiler/tests/org/jetbrains/kotlin/serialization/jvm/DebugJvmProtoBuf.java @@ -13,7 +13,6 @@ public final class DebugJvmProtoBuf { registry.add(org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf.typeAnnotation); registry.add(org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf.isRaw); registry.add(org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf.typeParameterAnnotation); - registry.add(org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf.classAnnotation); registry.add(org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf.classModuleName); registry.add(org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf.packageModuleName); } @@ -4592,17 +4591,6 @@ public final class DebugJvmProtoBuf { .newFileScopedGeneratedExtension( org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.class, org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.getDefaultInstance()); - public static final int CLASS_ANNOTATION_FIELD_NUMBER = 100; - /** - * extend .org.jetbrains.kotlin.serialization.Class { ... } - */ - public static final - com.google.protobuf.GeneratedMessage.GeneratedExtension< - org.jetbrains.kotlin.serialization.DebugProtoBuf.Class, - java.util.List> classAnnotation = com.google.protobuf.GeneratedMessage - .newFileScopedGeneratedExtension( - org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.class, - org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.getDefaultInstance()); public static final int CLASS_MODULE_NAME_FIELD_NUMBER = 101; /** * extend .org.jetbrains.kotlin.serialization.Class { ... } @@ -4704,14 +4692,11 @@ public final class DebugJvmProtoBuf { "rameter_annotation\0221.org.jetbrains.kotli" + "n.serialization.TypeParameter\030d \003(\0132..or" + "g.jetbrains.kotlin.serialization.Annotat" + - "ion:s\n\020class_annotation\022).org.jetbrains." + - "kotlin.serialization.Class\030d \003(\0132..org.j" + - "etbrains.kotlin.serialization.Annotation" + - ":J\n\021class_module_name\022).org.jetbrains.ko" + - "tlin.serialization.Class\030e \001(\005B\004\230\265\030\001:N\n\023", - "package_module_name\022+.org.jetbrains.kotl" + - "in.serialization.Package\030e \001(\005B\004\230\265\030\001B\022B\020" + - "DebugJvmProtoBuf" + "ion:J\n\021class_module_name\022).org.jetbrains" + + ".kotlin.serialization.Class\030e \001(\005B\004\230\265\030\001:" + + "N\n\023package_module_name\022+.org.jetbrains.k" + + "otlin.serialization.Package\030e \001(\005B\004\230\265\030\001B" + + "\022B\020DebugJvmProtoBuf" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -4754,9 +4739,8 @@ public final class DebugJvmProtoBuf { typeAnnotation.internalInit(descriptor.getExtensions().get(3)); isRaw.internalInit(descriptor.getExtensions().get(4)); typeParameterAnnotation.internalInit(descriptor.getExtensions().get(5)); - classAnnotation.internalInit(descriptor.getExtensions().get(6)); - classModuleName.internalInit(descriptor.getExtensions().get(7)); - packageModuleName.internalInit(descriptor.getExtensions().get(8)); + classModuleName.internalInit(descriptor.getExtensions().get(6)); + packageModuleName.internalInit(descriptor.getExtensions().get(7)); com.google.protobuf.ExtensionRegistry registry = com.google.protobuf.ExtensionRegistry.newInstance(); registry.add(org.jetbrains.kotlin.serialization.DebugExtOptionsProtoBuf.stringIdInTable); diff --git a/core/descriptor.loader.java/src/jvm_descriptors.proto b/core/descriptor.loader.java/src/jvm_descriptors.proto index 0910354e74c..811f9d1e2bb 100644 --- a/core/descriptor.loader.java/src/jvm_descriptors.proto +++ b/core/descriptor.loader.java/src/jvm_descriptors.proto @@ -110,8 +110,6 @@ extend TypeParameter { } extend Class { - repeated Annotation class_annotation = 100; - // If absent, assumed to be JvmAbi.DEFAULT_MODULE_NAME optional int32 class_module_name = 101 [(string_id_in_table) = true]; } diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/BinaryClassAnnotationAndConstantLoaderImpl.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/BinaryClassAnnotationAndConstantLoaderImpl.kt index 5ad51a79954..325d74c0edb 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/BinaryClassAnnotationAndConstantLoaderImpl.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/BinaryClassAnnotationAndConstantLoaderImpl.kt @@ -34,7 +34,6 @@ import org.jetbrains.kotlin.serialization.deserialization.AnnotationDeserializer import org.jetbrains.kotlin.serialization.deserialization.ErrorReporter import org.jetbrains.kotlin.serialization.deserialization.NameResolver import org.jetbrains.kotlin.serialization.deserialization.findClassAcrossModuleDependencies -import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.types.ErrorUtils import java.util.* @@ -50,18 +49,6 @@ class BinaryClassAnnotationAndConstantLoaderImpl( private val annotationDeserializer = AnnotationDeserializer(module) private val factory = ConstantValueFactory(module.builtIns) - override fun loadClassAnnotations( - classProto: ProtoBuf.Class, - nameResolver: NameResolver - ): List { - val binaryAnnotationDescriptors = super.loadClassAnnotations(classProto, nameResolver) - val serializedAnnotations = classProto.getExtension(JvmProtoBuf.classAnnotation).orEmpty() - val serializedAnnotationDescriptors = serializedAnnotations.map { - annotationDeserializer.deserializeAnnotation(it, nameResolver) - } - return binaryAnnotationDescriptors + serializedAnnotationDescriptors - } - override fun loadTypeAnnotation(proto: ProtoBuf.Annotation, nameResolver: NameResolver): AnnotationDescriptor = annotationDeserializer.deserializeAnnotation(proto, nameResolver) diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/serialization/jvm/JvmProtoBuf.java b/core/descriptor.loader.java/src/org/jetbrains/kotlin/serialization/jvm/JvmProtoBuf.java index 842c4a117c0..3a383ae5fb9 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/serialization/jvm/JvmProtoBuf.java +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/serialization/jvm/JvmProtoBuf.java @@ -13,7 +13,6 @@ public final class JvmProtoBuf { registry.add(org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf.typeAnnotation); registry.add(org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf.isRaw); registry.add(org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf.typeParameterAnnotation); - registry.add(org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf.classAnnotation); registry.add(org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf.classModuleName); registry.add(org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf.packageModuleName); } @@ -3803,21 +3802,6 @@ public final class JvmProtoBuf { 100, com.google.protobuf.WireFormat.FieldType.MESSAGE, false); - public static final int CLASS_ANNOTATION_FIELD_NUMBER = 100; - /** - * extend .org.jetbrains.kotlin.serialization.Class { ... } - */ - public static final - com.google.protobuf.GeneratedMessageLite.GeneratedExtension< - org.jetbrains.kotlin.serialization.ProtoBuf.Class, - java.util.List> classAnnotation = com.google.protobuf.GeneratedMessageLite - .newRepeatedGeneratedExtension( - org.jetbrains.kotlin.serialization.ProtoBuf.Class.getDefaultInstance(), - org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.getDefaultInstance(), - null, - 100, - com.google.protobuf.WireFormat.FieldType.MESSAGE, - false); public static final int CLASS_MODULE_NAME_FIELD_NUMBER = 101; /** * extend .org.jetbrains.kotlin.serialization.Class { ... } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/classFile/KotlinClsStubBuilder.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/classFile/KotlinClsStubBuilder.kt index 0b8ae32591f..17de4a48eb1 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/classFile/KotlinClsStubBuilder.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/classFile/KotlinClsStubBuilder.kt @@ -38,7 +38,6 @@ import org.jetbrains.kotlin.serialization.ProtoBuf import org.jetbrains.kotlin.serialization.deserialization.ErrorReporter import org.jetbrains.kotlin.serialization.deserialization.NameResolver import org.jetbrains.kotlin.serialization.deserialization.TypeTable -import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil import org.jetbrains.kotlin.storage.LockBasedStorageManager @@ -114,16 +113,6 @@ class AnnotationLoaderForClassFileStubBuilder( ) : AbstractBinaryClassAnnotationAndConstantLoader( LockBasedStorageManager.NO_LOCKS, kotlinClassFinder, errorReporter) { - override fun loadClassAnnotations( - classProto: ProtoBuf.Class, - nameResolver: NameResolver - ): List { - val binaryAnnotationDescriptors = super.loadClassAnnotations(classProto, nameResolver) - val serializedAnnotations = classProto.getExtension(JvmProtoBuf.classAnnotation).orEmpty() - val serializedAnnotationDescriptors = serializedAnnotations.map { nameResolver.getClassId(it.id) } - return binaryAnnotationDescriptors + serializedAnnotationDescriptors - } - override fun loadTypeAnnotation(proto: ProtoBuf.Annotation, nameResolver: NameResolver): ClassId = nameResolver.getClassId(proto.id) diff --git a/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/ProtoCompareGenerated.kt b/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/ProtoCompareGenerated.kt index 4a3907764d2..e09d74d90ab 100644 --- a/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/ProtoCompareGenerated.kt +++ b/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/ProtoCompareGenerated.kt @@ -112,12 +112,6 @@ open class ProtoCompareGenerated(val oldNameResolver: NameResolver, val newNameR if (!checkEquals(old.typeTable, new.typeTable)) return false } - if (old.getExtensionCount(JvmProtoBuf.classAnnotation) != new.getExtensionCount(JvmProtoBuf.classAnnotation)) return false - - for(i in 0..old.getExtensionCount(JvmProtoBuf.classAnnotation) - 1) { - if (!checkEquals(old.getExtension(JvmProtoBuf.classAnnotation, i), new.getExtension(JvmProtoBuf.classAnnotation, i))) return false - } - if (old.hasExtension(JvmProtoBuf.classModuleName) != new.hasExtension(JvmProtoBuf.classModuleName)) return false if (old.hasExtension(JvmProtoBuf.classModuleName)) { if (!checkStringEquals(old.getExtension(JvmProtoBuf.classModuleName), new.getExtension(JvmProtoBuf.classModuleName))) return false @@ -138,7 +132,6 @@ open class ProtoCompareGenerated(val oldNameResolver: NameResolver, val newNameR PROPERTY_LIST, ENUM_ENTRY_LIST, TYPE_TABLE, - CLASS_ANNOTATION_LIST, CLASS_MODULE_NAME } @@ -178,12 +171,6 @@ open class ProtoCompareGenerated(val oldNameResolver: NameResolver, val newNameR if (!checkEquals(old.typeTable, new.typeTable)) result.add(ProtoBufClassKind.TYPE_TABLE) } - if (old.getExtensionCount(JvmProtoBuf.classAnnotation) != new.getExtensionCount(JvmProtoBuf.classAnnotation)) result.add(ProtoBufClassKind.CLASS_ANNOTATION_LIST) - - for(i in 0..old.getExtensionCount(JvmProtoBuf.classAnnotation) - 1) { - if (!checkEquals(old.getExtension(JvmProtoBuf.classAnnotation, i), new.getExtension(JvmProtoBuf.classAnnotation, i))) result.add(ProtoBufClassKind.CLASS_ANNOTATION_LIST) - } - if (old.hasExtension(JvmProtoBuf.classModuleName) != new.hasExtension(JvmProtoBuf.classModuleName)) result.add(ProtoBufClassKind.CLASS_MODULE_NAME) if (old.hasExtension(JvmProtoBuf.classModuleName)) { if (!checkStringEquals(old.getExtension(JvmProtoBuf.classModuleName), new.getExtension(JvmProtoBuf.classModuleName))) result.add(ProtoBufClassKind.CLASS_MODULE_NAME) @@ -426,14 +413,6 @@ open class ProtoCompareGenerated(val oldNameResolver: NameResolver, val newNameR return true } - open fun checkEquals(old: ProtoBuf.Annotation, new: ProtoBuf.Annotation): Boolean { - if (!checkClassIdEquals(old.id, new.id)) return false - - if (!checkEqualsAnnotationArgument(old, new)) return false - - return true - } - open fun checkEquals(old: ProtoBuf.ValueParameter, new: ProtoBuf.ValueParameter): Boolean { if (old.hasFlags() != new.hasFlags()) return false if (old.hasFlags()) { @@ -503,6 +482,14 @@ open class ProtoCompareGenerated(val oldNameResolver: NameResolver, val newNameR return true } + open fun checkEquals(old: ProtoBuf.Annotation, new: ProtoBuf.Annotation): Boolean { + if (!checkClassIdEquals(old.id, new.id)) return false + + if (!checkEqualsAnnotationArgument(old, new)) return false + + return true + } + open fun checkEquals(old: ProtoBuf.Type.Argument, new: ProtoBuf.Type.Argument): Boolean { if (old.hasProjection() != new.hasProjection()) return false if (old.hasProjection()) { @@ -522,14 +509,6 @@ open class ProtoCompareGenerated(val oldNameResolver: NameResolver, val newNameR return true } - open fun checkEquals(old: ProtoBuf.Annotation.Argument, new: ProtoBuf.Annotation.Argument): Boolean { - if (!checkStringEquals(old.nameId, new.nameId)) return false - - if (!checkEquals(old.value, new.value)) return false - - return true - } - open fun checkEquals(old: JvmProtoBuf.JvmFieldSignature, new: JvmProtoBuf.JvmFieldSignature): Boolean { if (old.hasName() != new.hasName()) return false if (old.hasName()) { @@ -544,6 +523,14 @@ open class ProtoCompareGenerated(val oldNameResolver: NameResolver, val newNameR return true } + open fun checkEquals(old: ProtoBuf.Annotation.Argument, new: ProtoBuf.Annotation.Argument): Boolean { + if (!checkStringEquals(old.nameId, new.nameId)) return false + + if (!checkEquals(old.value, new.value)) return false + + return true + } + open fun checkEquals(old: ProtoBuf.Annotation.Argument.Value, new: ProtoBuf.Annotation.Argument.Value): Boolean { if (old.hasType() != new.hasType()) return false if (old.hasType()) { @@ -892,10 +879,6 @@ fun ProtoBuf.Class.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> hashCode = 31 * hashCode + typeTable.hashCode(stringIndexes, fqNameIndexes) } - for(i in 0..getExtensionCount(JvmProtoBuf.classAnnotation) - 1) { - hashCode = 31 * hashCode + getExtension(JvmProtoBuf.classAnnotation, i).hashCode(stringIndexes, fqNameIndexes) - } - if (hasExtension(JvmProtoBuf.classModuleName)) { hashCode = 31 * hashCode + stringIndexes(getExtension(JvmProtoBuf.classModuleName)) } @@ -1129,18 +1112,6 @@ fun ProtoBuf.EnumEntry.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int return hashCode } -fun ProtoBuf.Annotation.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int { - var hashCode = 1 - - hashCode = 31 * hashCode + fqNameIndexes(id) - - for(i in 0..argumentCount - 1) { - hashCode = 31 * hashCode + getArgument(i).hashCode(stringIndexes, fqNameIndexes) - } - - return hashCode -} - fun ProtoBuf.ValueParameter.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int { var hashCode = 1 @@ -1205,6 +1176,18 @@ fun JvmProtoBuf.JvmPropertySignature.hashCode(stringIndexes: (Int) -> Int, fqNam return hashCode } +fun ProtoBuf.Annotation.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int { + var hashCode = 1 + + hashCode = 31 * hashCode + fqNameIndexes(id) + + for(i in 0..argumentCount - 1) { + hashCode = 31 * hashCode + getArgument(i).hashCode(stringIndexes, fqNameIndexes) + } + + return hashCode +} + fun ProtoBuf.Type.Argument.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int { var hashCode = 1 @@ -1223,16 +1206,6 @@ fun ProtoBuf.Type.Argument.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: return hashCode } -fun ProtoBuf.Annotation.Argument.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int { - var hashCode = 1 - - hashCode = 31 * hashCode + stringIndexes(nameId) - - hashCode = 31 * hashCode + value.hashCode(stringIndexes, fqNameIndexes) - - return hashCode -} - fun JvmProtoBuf.JvmFieldSignature.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int { var hashCode = 1 @@ -1247,6 +1220,16 @@ fun JvmProtoBuf.JvmFieldSignature.hashCode(stringIndexes: (Int) -> Int, fqNameIn return hashCode } +fun ProtoBuf.Annotation.Argument.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int { + var hashCode = 1 + + hashCode = 31 * hashCode + stringIndexes(nameId) + + hashCode = 31 * hashCode + value.hashCode(stringIndexes, fqNameIndexes) + + return hashCode +} + fun ProtoBuf.Annotation.Argument.Value.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int { var hashCode = 1 diff --git a/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/protoDifferenceUtils.kt b/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/protoDifferenceUtils.kt index 386acf3ad3b..b2d0d43f7a6 100644 --- a/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/protoDifferenceUtils.kt +++ b/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/protoDifferenceUtils.kt @@ -158,8 +158,7 @@ private class DifferenceCalculatorForClass(oldData: ProtoMapValue, newData: Prot ProtoBufClassKind.FLAGS, ProtoBufClassKind.FQ_NAME, ProtoBufClassKind.TYPE_PARAMETER_LIST, - ProtoBufClassKind.SUPERTYPE_LIST, - ProtoBufClassKind.CLASS_ANNOTATION_LIST + ProtoBufClassKind.SUPERTYPE_LIST ) }