diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java index da4b4137101..9bc0e480cbf 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java @@ -174,7 +174,7 @@ public class FunctionCodegen { String implClassName = CodegenContextUtil.getImplementationClassShortName(owner); if (implClassName != null) { - v.getSerializationBindings().put(IMPL_CLASS_NAME_FOR_CALLABLE, functionDescriptor, implClassName); + v.getSerializationBindings().put(METHOD_IMPL_CLASS_NAME, functionDescriptor, implClassName); } if (CodegenContextUtil.isImplClassOwner(owner)) { v.getSerializationBindings().put(METHOD_FOR_FUNCTION, functionDescriptor, asmMethod); diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java index 251013603ed..2e009a0d80c 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java @@ -112,7 +112,7 @@ public class PropertyCodegen { String implClassName = CodegenContextUtil.getImplementationClassShortName(context); if (implClassName != null) { - v.getSerializationBindings().put(IMPL_CLASS_NAME_FOR_CALLABLE, descriptor, implClassName); + v.getSerializationBindings().put(PROPERTY_IMPL_CLASS_NAME, descriptor, implClassName); } if (CodegenContextUtil.isImplClassOwner(context)) { @@ -267,7 +267,7 @@ public class PropertyCodegen { } else { Type tImplType = typeMapper.mapDefaultImpls((ClassDescriptor) context.getContextDescriptor()); - v.getSerializationBindings().put(IMPL_CLASS_NAME_FOR_CALLABLE, descriptor, shortNameByAsmType(tImplType)); + v.getSerializationBindings().put(PROPERTY_IMPL_CLASS_NAME, descriptor, shortNameByAsmType(tImplType)); } if (kind != OwnerKind.DEFAULT_IMPLS) { diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializationBindings.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializationBindings.java index ae73e9ca802..a0bf9c0a2ec 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializationBindings.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializationBindings.java @@ -19,7 +19,6 @@ package org.jetbrains.kotlin.codegen.serialization; import com.intellij.openapi.util.Pair; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor; import org.jetbrains.kotlin.descriptors.FunctionDescriptor; import org.jetbrains.kotlin.descriptors.PropertyDescriptor; import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor; @@ -37,7 +36,9 @@ public final class JvmSerializationBindings { SerializationMappingSlice.create(); public static final SerializationMappingSlice SYNTHETIC_METHOD_FOR_PROPERTY = SerializationMappingSlice.create(); - public static final SerializationMappingSlice IMPL_CLASS_NAME_FOR_CALLABLE = + public static final SerializationMappingSlice METHOD_IMPL_CLASS_NAME = + SerializationMappingSlice.create(); + public static final SerializationMappingSlice PROPERTY_IMPL_CLASS_NAME = SerializationMappingSlice.create(); public static final SerializationMappingSetSlice STATIC_FIELD_IN_OUTER_CLASS = SerializationMappingSetSlice.create(); diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializerExtension.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializerExtension.java index 4d255d23177..dfb636fad2d 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializerExtension.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializerExtension.java @@ -16,7 +16,6 @@ package org.jetbrains.kotlin.codegen.serialization; -import com.google.protobuf.MessageLite; import com.intellij.openapi.util.Pair; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -99,8 +98,6 @@ public class JvmSerializerExtension extends SerializerExtension { proto.setExtension(JvmProtoBuf.constructorSignature, signature); } } - - saveImplClassName(descriptor, proto); } @Override @@ -113,7 +110,10 @@ public class JvmSerializerExtension extends SerializerExtension { } } - saveImplClassName(descriptor, proto); + String name = bindings.get(METHOD_IMPL_CLASS_NAME, descriptor); + if (name != null) { + proto.setExtension(JvmProtoBuf.methodImplClassName, stringTable.getStringIndex(name)); + } } @Override @@ -151,19 +151,9 @@ public class JvmSerializerExtension extends SerializerExtension { proto.setExtension(JvmProtoBuf.propertySignature, signature); - saveImplClassName(descriptor, proto); - } - - private void saveImplClassName(@NotNull CallableMemberDescriptor callable, @NotNull MessageLite.Builder proto) { - String name = bindings.get(IMPL_CLASS_NAME_FOR_CALLABLE, callable); - if (name == null) return; - - int index = stringTable.getStringIndex(name); - if (proto instanceof ProtoBuf.Function.Builder) { - ((ProtoBuf.Function.Builder) proto).setExtension(JvmProtoBuf.methodImplClassName, index); - } - else if (proto instanceof ProtoBuf.Property.Builder) { - ((ProtoBuf.Property.Builder) proto).setExtension(JvmProtoBuf.propertyImplClassName, index); + String name = bindings.get(PROPERTY_IMPL_CLASS_NAME, descriptor); + if (name != null) { + proto.setExtension(JvmProtoBuf.propertyImplClassName, stringTable.getStringIndex(name)); } }