From 370f6481405775e24d0cefe4b6dd5203253e1eb0 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Sat, 9 Jun 2012 20:31:07 +0400 Subject: [PATCH] Made JetMethodAnnotationWriter.writeFlags(BitSet) back public, since it is more convenient. --- .../org/jetbrains/jet/codegen/FunctionCodegen.java | 11 +++++------ .../jet/codegen/ImplementationBodyCodegen.java | 5 +++-- .../org/jetbrains/jet/codegen/PropertyCodegen.java | 13 ++++++------- .../signature/kotlin/JetMethodAnnotationWriter.java | 10 +--------- 4 files changed, 15 insertions(+), 24 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java index f47fe2def07..728ad6b3efa 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java @@ -139,14 +139,13 @@ public class FunctionCodegen { throw new IllegalStateException(); } JetMethodAnnotationWriter aw = JetMethodAnnotationWriter.visitAnnotation(mv); + BitSet kotlinFlags = new BitSet(); if (CodegenUtil.isInterface(functionDescriptor.getContainingDeclaration()) && modality != Modality.ABSTRACT) { - aw.writeFlags(modality == Modality.FINAL - ? JvmStdlibNames.JET_METHOD_FLAG_FORCE_FINAL_BIT - : JvmStdlibNames.JET_METHOD_FLAG_FORCE_OPEN_BIT); - } - else { - aw.writeFlags(); + kotlinFlags.set(modality == Modality.FINAL + ? JvmStdlibNames.JET_METHOD_FLAG_FORCE_FINAL_BIT + : JvmStdlibNames.JET_METHOD_FLAG_FORCE_OPEN_BIT); } + aw.writeFlags(kotlinFlags); aw.writeNullableReturnType(functionDescriptor.getReturnType().isNullable()); aw.writeTypeParameters(jvmSignature.getKotlinTypeParameter()); aw.writeReturnType(jvmSignature.getKotlinReturnType()); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java index b78299c7458..ed5994399ca 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java @@ -776,16 +776,17 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { JvmMethodSignature jvmSignature = typeMapper.mapToCallableMethod(inheritedFun, false, OwnerKind.IMPLEMENTATION).getSignature(); JetMethodAnnotationWriter aw = JetMethodAnnotationWriter.visitAnnotation(mv); + BitSet kotlinFlags = new BitSet(); if (fun instanceof PropertyAccessorDescriptor) { - aw.writeFlags(JvmStdlibNames.JET_METHOD_FLAG_PROPERTY_BIT); + kotlinFlags.set(JvmStdlibNames.JET_METHOD_FLAG_PROPERTY_BIT); aw.writeTypeParameters(jvmSignature.getKotlinTypeParameter()); aw.writePropertyType(jvmSignature.getKotlinReturnType()); } else { - aw.writeFlags(); aw.writeNullableReturnType(fun.getReturnType().isNullable()); aw.writeTypeParameters(jvmSignature.getKotlinTypeParameter()); aw.writeReturnType(jvmSignature.getKotlinReturnType()); } + aw.writeFlags(kotlinFlags); aw.visitEnd(); if (state.getClassBuilderMode() == ClassBuilderMode.STUBS) { diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/PropertyCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/PropertyCodegen.java index 96af2b74f2c..89ccd6af79f 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/PropertyCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/PropertyCodegen.java @@ -226,15 +226,14 @@ public class PropertyCodegen { @NotNull PropertyDescriptor propertyDescriptor) { JetMethodAnnotationWriter aw = JetMethodAnnotationWriter.visitAnnotation(mv); Modality modality = propertyDescriptor.getModality(); + BitSet flags = new BitSet(); + flags.set(JvmStdlibNames.JET_METHOD_FLAG_PROPERTY_BIT); if (CodegenUtil.isInterface(propertyDescriptor.getContainingDeclaration()) && modality != Modality.ABSTRACT) { - aw.writeFlags(JvmStdlibNames.JET_METHOD_FLAG_PROPERTY_BIT, - modality == Modality.FINAL - ? JvmStdlibNames.JET_METHOD_FLAG_FORCE_FINAL_BIT - : JvmStdlibNames.JET_METHOD_FLAG_FORCE_OPEN_BIT); - } - else { - aw.writeFlags(JvmStdlibNames.JET_METHOD_FLAG_PROPERTY_BIT); + flags.set(modality == Modality.FINAL + ? JvmStdlibNames.JET_METHOD_FLAG_FORCE_FINAL_BIT + : JvmStdlibNames.JET_METHOD_FLAG_FORCE_OPEN_BIT); } + aw.writeFlags(flags); aw.writeTypeParameters(typeParameters); aw.writePropertyType(kotlinType); aw.visitEnd(); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/signature/kotlin/JetMethodAnnotationWriter.java b/compiler/backend/src/org/jetbrains/jet/codegen/signature/kotlin/JetMethodAnnotationWriter.java index 06fd841c61a..82f69f2e0a3 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/signature/kotlin/JetMethodAnnotationWriter.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/signature/kotlin/JetMethodAnnotationWriter.java @@ -33,15 +33,7 @@ public class JetMethodAnnotationWriter { this.av = av; } - public void writeFlags(int... flagBits) { - BitSet bitSet = new BitSet(); - for (int bit : flagBits) { - bitSet.set(bit); - } - writeFlags(bitSet); - } - - private void writeFlags(BitSet flags) { + public void writeFlags(BitSet flags) { int flagsValue = 0; for (int bit = 0; bit < flags.length(); bit++) { if (flags.get(bit)) {