From 7d54027f415a9c2d26cd5d564a64089984795461 Mon Sep 17 00:00:00 2001 From: Mikhail Bogdanov Date: Thu, 2 Apr 2020 13:26:00 +0200 Subject: [PATCH] Minor. Rename new proto property, JvmFlags.getClassFlags method Compiler requires this new flag to know where actual interface method body is generated to emit proper method calls --- .../incremental/ProtoCompareGenerated.kt | 18 +++++++-------- .../incremental/protoDifferenceUtils.kt | 2 +- .../kotlin/metadata/jvm/DebugJvmProtoBuf.java | 22 +++++++++---------- .../serialization/JvmSerializerExtension.kt | 2 +- core/metadata.jvm/src/jvm_metadata.proto | 2 +- .../kotlin/metadata/jvm/JvmProtoBuf.java | 6 ++--- .../metadata/jvm/deserialization/JvmFlags.kt | 11 ++++++---- .../jvm/deserialization/JvmProtoBufUtil.kt | 2 +- 8 files changed, 34 insertions(+), 31 deletions(-) diff --git a/build-common/src/org/jetbrains/kotlin/incremental/ProtoCompareGenerated.kt b/build-common/src/org/jetbrains/kotlin/incremental/ProtoCompareGenerated.kt index ffd07fd4033..73656ac2f8f 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/ProtoCompareGenerated.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/ProtoCompareGenerated.kt @@ -206,9 +206,9 @@ open class ProtoCompareGenerated( if (!checkStringEquals(old.getExtension(JvmProtoBuf.anonymousObjectOriginName), new.getExtension(JvmProtoBuf.anonymousObjectOriginName))) return false } - if (old.hasExtension(JvmProtoBuf.generationOptions) != new.hasExtension(JvmProtoBuf.generationOptions)) return false - if (old.hasExtension(JvmProtoBuf.generationOptions)) { - if (old.getExtension(JvmProtoBuf.generationOptions) != new.getExtension(JvmProtoBuf.generationOptions)) return false + if (old.hasExtension(JvmProtoBuf.jvmClassFlags) != new.hasExtension(JvmProtoBuf.jvmClassFlags)) return false + if (old.hasExtension(JvmProtoBuf.jvmClassFlags)) { + if (old.getExtension(JvmProtoBuf.jvmClassFlags) != new.getExtension(JvmProtoBuf.jvmClassFlags)) return false } if (old.getExtensionCount(JsProtoBuf.classAnnotation) != new.getExtensionCount(JsProtoBuf.classAnnotation)) { @@ -269,7 +269,7 @@ open class ProtoCompareGenerated( JVM_EXT_CLASS_MODULE_NAME, JVM_EXT_CLASS_LOCAL_VARIABLE_LIST, JVM_EXT_ANONYMOUS_OBJECT_ORIGIN_NAME, - JVM_EXT_GENERATION_OPTIONS, + JVM_EXT_JVM_CLASS_FLAGS, JS_EXT_CLASS_ANNOTATION_LIST, JS_EXT_CLASS_CONTAINING_FILE_ID, JAVA_EXT_IS_PACKAGE_PRIVATE_CLASS, @@ -338,9 +338,9 @@ open class ProtoCompareGenerated( if (!checkStringEquals(old.getExtension(JvmProtoBuf.anonymousObjectOriginName), new.getExtension(JvmProtoBuf.anonymousObjectOriginName))) result.add(ProtoBufClassKind.JVM_EXT_ANONYMOUS_OBJECT_ORIGIN_NAME) } - if (old.hasExtension(JvmProtoBuf.generationOptions) != new.hasExtension(JvmProtoBuf.generationOptions)) result.add(ProtoBufClassKind.JVM_EXT_GENERATION_OPTIONS) - if (old.hasExtension(JvmProtoBuf.generationOptions)) { - if (old.getExtension(JvmProtoBuf.generationOptions) != new.getExtension(JvmProtoBuf.generationOptions)) result.add(ProtoBufClassKind.JVM_EXT_GENERATION_OPTIONS) + if (old.hasExtension(JvmProtoBuf.jvmClassFlags) != new.hasExtension(JvmProtoBuf.jvmClassFlags)) result.add(ProtoBufClassKind.JVM_EXT_JVM_CLASS_FLAGS) + if (old.hasExtension(JvmProtoBuf.jvmClassFlags)) { + if (old.getExtension(JvmProtoBuf.jvmClassFlags) != new.getExtension(JvmProtoBuf.jvmClassFlags)) result.add(ProtoBufClassKind.JVM_EXT_JVM_CLASS_FLAGS) } if (old.getExtensionCount(JsProtoBuf.classAnnotation) != new.getExtensionCount(JsProtoBuf.classAnnotation)) { @@ -1746,8 +1746,8 @@ fun ProtoBuf.Class.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> hashCode = 31 * hashCode + stringIndexes(getExtension(JvmProtoBuf.anonymousObjectOriginName)) } - if (hasExtension(JvmProtoBuf.generationOptions)) { - hashCode = 31 * hashCode + getExtension(JvmProtoBuf.generationOptions) + if (hasExtension(JvmProtoBuf.jvmClassFlags)) { + hashCode = 31 * hashCode + getExtension(JvmProtoBuf.jvmClassFlags) } for(i in 0..getExtensionCount(JsProtoBuf.classAnnotation) - 1) { diff --git a/build-common/src/org/jetbrains/kotlin/incremental/protoDifferenceUtils.kt b/build-common/src/org/jetbrains/kotlin/incremental/protoDifferenceUtils.kt index 5631853ea28..c22964443cf 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/protoDifferenceUtils.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/protoDifferenceUtils.kt @@ -273,7 +273,7 @@ class DifferenceCalculatorForClass( isClassAffected = true areSubclassesAffected = true } - ProtoBufClassKind.JVM_EXT_GENERATION_OPTIONS -> { + ProtoBufClassKind.JVM_EXT_JVM_CLASS_FLAGS -> { isClassAffected = true areSubclassesAffected = true } diff --git a/build-common/test/org/jetbrains/kotlin/metadata/jvm/DebugJvmProtoBuf.java b/build-common/test/org/jetbrains/kotlin/metadata/jvm/DebugJvmProtoBuf.java index 2876cb3c924..f164b522955 100644 --- a/build-common/test/org/jetbrains/kotlin/metadata/jvm/DebugJvmProtoBuf.java +++ b/build-common/test/org/jetbrains/kotlin/metadata/jvm/DebugJvmProtoBuf.java @@ -18,7 +18,7 @@ public final class DebugJvmProtoBuf { registry.add(org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.classModuleName); registry.add(org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.classLocalVariable); registry.add(org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.anonymousObjectOriginName); - registry.add(org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.generationOptions); + registry.add(org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.jvmClassFlags); registry.add(org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.packageModuleName); registry.add(org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.packageLocalVariable); } @@ -4651,7 +4651,7 @@ public final class DebugJvmProtoBuf { .newFileScopedGeneratedExtension( java.lang.Integer.class, null); - public static final int GENERATION_OPTIONS_FIELD_NUMBER = 104; + public static final int JVM_CLASS_FLAGS_FIELD_NUMBER = 104; /** * extend .org.jetbrains.kotlin.metadata.Class { ... } * @@ -4662,7 +4662,7 @@ public final class DebugJvmProtoBuf { public static final org.jetbrains.kotlin.protobuf.GeneratedMessage.GeneratedExtension< org.jetbrains.kotlin.metadata.DebugProtoBuf.Class, - java.lang.Integer> generationOptions = org.jetbrains.kotlin.protobuf.GeneratedMessage + java.lang.Integer> jvmClassFlags = org.jetbrains.kotlin.protobuf.GeneratedMessage .newFileScopedGeneratedExtension( java.lang.Integer.class, null); @@ -4774,13 +4774,13 @@ public final class DebugJvmProtoBuf { "\'.org.jetbrains.kotlin.metadata.Property", ":P\n\034anonymous_object_origin_name\022$.org.j" + "etbrains.kotlin.metadata.Class\030g \001(\005B\004\230\265" + - "\030\001:C\n\022generation_options\022$.org.jetbrains" + - ".kotlin.metadata.Class\030h \001(\005:\0010:I\n\023packa" + - "ge_module_name\022&.org.jetbrains.kotlin.me" + - "tadata.Package\030e \001(\005B\004\230\265\030\001:o\n\026package_lo" + - "cal_variable\022&.org.jetbrains.kotlin.meta" + - "data.Package\030f \003(\0132\'.org.jetbrains.kotli" + - "n.metadata.PropertyB\022B\020DebugJvmProtoBuf" + "\030\001:@\n\017jvm_class_flags\022$.org.jetbrains.ko" + + "tlin.metadata.Class\030h \001(\005:\0010:I\n\023package_" + + "module_name\022&.org.jetbrains.kotlin.metad" + + "ata.Package\030e \001(\005B\004\230\265\030\001:o\n\026package_local" + + "_variable\022&.org.jetbrains.kotlin.metadat" + + "a.Package\030f \003(\0132\'.org.jetbrains.kotlin.m" + + "etadata.PropertyB\022B\020DebugJvmProtoBuf" }; org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -4837,7 +4837,7 @@ public final class DebugJvmProtoBuf { classModuleName.internalInit(descriptor.getExtensions().get(8)); classLocalVariable.internalInit(descriptor.getExtensions().get(9)); anonymousObjectOriginName.internalInit(descriptor.getExtensions().get(10)); - generationOptions.internalInit(descriptor.getExtensions().get(11)); + jvmClassFlags.internalInit(descriptor.getExtensions().get(11)); packageModuleName.internalInit(descriptor.getExtensions().get(12)); packageLocalVariable.internalInit(descriptor.getExtensions().get(13)); org.jetbrains.kotlin.protobuf.ExtensionRegistry registry = diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializerExtension.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializerExtension.kt index 1242f601c1b..1c55e80c49a 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializerExtension.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializerExtension.kt @@ -90,7 +90,7 @@ class JvmSerializerExtension @JvmOverloads constructor( writeVersionRequirementForJvmDefaultIfNeeded(descriptor, proto, versionRequirementTable) if (jvmDefaultMode.forAllMethodsWithBody && isInterface(descriptor)) { - proto.setExtension(JvmProtoBuf.generationOptions, JvmFlags.getPropertyFlags(true)) + proto.setExtension(JvmProtoBuf.jvmClassFlags, JvmFlags.getClassFlags(true)) } } diff --git a/core/metadata.jvm/src/jvm_metadata.proto b/core/metadata.jvm/src/jvm_metadata.proto index 40976600c22..ec6851d1565 100644 --- a/core/metadata.jvm/src/jvm_metadata.proto +++ b/core/metadata.jvm/src/jvm_metadata.proto @@ -130,7 +130,7 @@ extend Class { // isFunctionBodyInInterface: 0 if actual body generated in DefaultImpl, 1 - otherwise (in interface default method) - optional int32 generation_options = 104 [default = 0]; + optional int32 jvm_class_flags = 104 [default = 0]; } extend Package { diff --git a/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/JvmProtoBuf.java b/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/JvmProtoBuf.java index bcb6ed4d3c0..37e016c4752 100644 --- a/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/JvmProtoBuf.java +++ b/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/JvmProtoBuf.java @@ -18,7 +18,7 @@ public final class JvmProtoBuf { registry.add(org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.classModuleName); registry.add(org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.classLocalVariable); registry.add(org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.anonymousObjectOriginName); - registry.add(org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.generationOptions); + registry.add(org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.jvmClassFlags); registry.add(org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.packageModuleName); registry.add(org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.packageLocalVariable); } @@ -3986,7 +3986,7 @@ public final class JvmProtoBuf { 103, org.jetbrains.kotlin.protobuf.WireFormat.FieldType.INT32, java.lang.Integer.class); - public static final int GENERATION_OPTIONS_FIELD_NUMBER = 104; + public static final int JVM_CLASS_FLAGS_FIELD_NUMBER = 104; /** * extend .org.jetbrains.kotlin.metadata.Class { ... } * @@ -3997,7 +3997,7 @@ public final class JvmProtoBuf { public static final org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< org.jetbrains.kotlin.metadata.ProtoBuf.Class, - java.lang.Integer> generationOptions = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + java.lang.Integer> jvmClassFlags = org.jetbrains.kotlin.protobuf.GeneratedMessageLite .newSingularGeneratedExtension( org.jetbrains.kotlin.metadata.ProtoBuf.Class.getDefaultInstance(), 0, diff --git a/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/deserialization/JvmFlags.kt b/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/deserialization/JvmFlags.kt index 994cf10ba86..b986933ce27 100644 --- a/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/deserialization/JvmFlags.kt +++ b/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/deserialization/JvmFlags.kt @@ -12,12 +12,15 @@ import org.jetbrains.kotlin.metadata.deserialization.Flags */ object JvmFlags { // Properties - val IS_MOVED_FROM_INTERFACE_COMPANION = Flags.FlagField.booleanFirst() - fun getPropertyFlags(booleanToIntFlag: Boolean): Int = - IS_MOVED_FROM_INTERFACE_COMPANION.toFlags(booleanToIntFlag) - //Class val ARE_INTERFACE_METHOD_BODIES_INSIDE = Flags.FlagField.booleanFirst() + + fun getPropertyFlags(isMovedFromInterfaceCompanion: Boolean): Int = + IS_MOVED_FROM_INTERFACE_COMPANION.toFlags(isMovedFromInterfaceCompanion) + + fun getClassFlags(isAllInterfaceBodiesInside: Boolean): Int = + ARE_INTERFACE_METHOD_BODIES_INSIDE.toFlags(isAllInterfaceBodiesInside) + } diff --git a/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/deserialization/JvmProtoBufUtil.kt b/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/deserialization/JvmProtoBufUtil.kt index 8941031fd8f..e3f0bb39d74 100644 --- a/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/deserialization/JvmProtoBufUtil.kt +++ b/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/deserialization/JvmProtoBufUtil.kt @@ -132,5 +132,5 @@ object JvmProtoBufUtil { @JvmStatic fun isNewPlaceForBodyGeneration(proto: ProtoBuf.Class): Boolean = - JvmFlags.ARE_INTERFACE_METHOD_BODIES_INSIDE.get(proto.getExtension(JvmProtoBuf.generationOptions)) + JvmFlags.ARE_INTERFACE_METHOD_BODIES_INSIDE.get(proto.getExtension(JvmProtoBuf.jvmClassFlags)) }