diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/AnnotationCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/AnnotationCodegen.java index 6d3759a9697..2ffacdd6f48 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/AnnotationCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/AnnotationCodegen.java @@ -221,7 +221,7 @@ public abstract class AnnotationCodegen { private static boolean isInvisibleFromTheOutside(@Nullable DeclarationDescriptor descriptor) { if (isAccessor(descriptor)) return true; if (descriptor instanceof MemberDescriptor) { - return AsmUtil.getVisibilityAccessFlag((MemberDescriptor) descriptor) == Opcodes.ACC_PRIVATE; + return DescriptorAsmUtil.getVisibilityAccessFlag((MemberDescriptor) descriptor) == Opcodes.ACC_PRIVATE; } return false; } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClosureCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClosureCodegen.java index 3b9858d4d64..48247834fa3 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClosureCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClosureCodegen.java @@ -50,8 +50,9 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import static org.jetbrains.kotlin.codegen.AsmUtil.*; +import static org.jetbrains.kotlin.codegen.AsmUtil.CAPTURED_THIS_FIELD; import static org.jetbrains.kotlin.codegen.CallableReferenceUtilKt.*; +import static org.jetbrains.kotlin.codegen.DescriptorAsmUtil.*; import static org.jetbrains.kotlin.codegen.JvmCodegenUtil.isConst; import static org.jetbrains.kotlin.codegen.binding.CodegenBinding.CLOSURE; import static org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings.METHOD_FOR_FUNCTION; @@ -139,7 +140,7 @@ public class ClosureCodegen extends MemberCodegen { this.asmType = typeMapper.mapClass(classDescriptor); - visibilityFlag = AsmUtil.getVisibilityAccessFlagForClass(classDescriptor); + visibilityFlag = DescriptorAsmUtil.getVisibilityAccessFlagForClass(classDescriptor); } @Override diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ConstructorCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ConstructorCodegen.java index a9abe375f87..336210c8b9a 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ConstructorCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ConstructorCodegen.java @@ -298,7 +298,7 @@ public class ConstructorCodegen { int k = 1; for (FieldInfo info : argsFromClosure) { - k = AsmUtil.genAssignInstanceFieldFromParam(info, k, iv); + k = DescriptorAsmUtil.genAssignInstanceFieldFromParam(info, k, iv); } } } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/DefaultParameterValueSubstitutor.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/DefaultParameterValueSubstitutor.kt index 9b543c0aed6..0eb229f90e1 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/DefaultParameterValueSubstitutor.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/DefaultParameterValueSubstitutor.kt @@ -127,8 +127,8 @@ class DefaultParameterValueSubstitutor(val state: GenerationState) { substituteCount: Int ) { val typeMapper = state.typeMapper - val isStatic = AsmUtil.isStaticMethod(contextKind, functionDescriptor) - val baseMethodFlags = AsmUtil.getCommonCallableFlags(functionDescriptor, state) and Opcodes.ACC_VARARGS.inv() + val isStatic = DescriptorAsmUtil.isStaticMethod(contextKind, functionDescriptor) + val baseMethodFlags = DescriptorAsmUtil.getCommonCallableFlags(functionDescriptor, state) and Opcodes.ACC_VARARGS.inv() val remainingParameters = getRemainingParameters(functionDescriptor.original, substituteCount) val remainingParametersDeclarations = remainingParameters.map { DescriptorToSourceUtils.descriptorToDeclaration(it) as? KtParameter } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/DescriptorAsmUtil.java similarity index 72% rename from compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java rename to compiler/backend/src/org/jetbrains/kotlin/codegen/DescriptorAsmUtil.java index 8c08f229b78..15b7ce13c4c 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/DescriptorAsmUtil.java @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.codegen; -import com.google.common.collect.ImmutableMap; import com.google.common.collect.Sets; import com.intellij.openapi.util.Pair; import com.intellij.psi.tree.IElementType; @@ -14,7 +13,6 @@ import kotlin.Unit; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.builtins.KotlinBuiltIns; -import org.jetbrains.kotlin.builtins.PrimitiveType; import org.jetbrains.kotlin.codegen.binding.CalculatedClosure; import org.jetbrains.kotlin.codegen.binding.CodegenBinding; import org.jetbrains.kotlin.codegen.context.CodegenContext; @@ -22,16 +20,15 @@ import org.jetbrains.kotlin.codegen.intrinsics.HashCode; import org.jetbrains.kotlin.codegen.intrinsics.IntrinsicMethods; import org.jetbrains.kotlin.codegen.state.GenerationState; import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper; -import org.jetbrains.kotlin.config.*; +import org.jetbrains.kotlin.config.JvmDefaultMode; +import org.jetbrains.kotlin.config.JvmTarget; +import org.jetbrains.kotlin.config.LanguageFeature; +import org.jetbrains.kotlin.config.LanguageVersionSettings; import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.incremental.components.NoLookupLocation; import org.jetbrains.kotlin.lexer.KtTokens; -import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities; -import org.jetbrains.kotlin.load.java.JvmAnnotationNames; import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil; import org.jetbrains.kotlin.metadata.jvm.serialization.JvmStringTable; -import org.jetbrains.kotlin.name.ClassId; -import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.protobuf.MessageLite; import org.jetbrains.kotlin.renderer.DescriptorRenderer; @@ -41,7 +38,9 @@ import org.jetbrains.kotlin.resolve.InlineClassDescriptorResolver; import org.jetbrains.kotlin.resolve.InlineClassesUtilsKt; import org.jetbrains.kotlin.resolve.deprecation.DeprecationResolver; import org.jetbrains.kotlin.resolve.inline.InlineUtil; -import org.jetbrains.kotlin.resolve.jvm.*; +import org.jetbrains.kotlin.resolve.jvm.AsmTypes; +import org.jetbrains.kotlin.resolve.jvm.InlineClassManglingRulesKt; +import org.jetbrains.kotlin.resolve.jvm.RuntimeAssertionInfo; import org.jetbrains.kotlin.resolve.jvm.annotations.JvmAnnotationUtilKt; import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin; import org.jetbrains.kotlin.serialization.DescriptorSerializer; @@ -50,15 +49,14 @@ import org.jetbrains.kotlin.types.KotlinType; import org.jetbrains.kotlin.types.SimpleType; import org.jetbrains.org.objectweb.asm.*; import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter; -import org.jetbrains.org.objectweb.asm.commons.Method; import java.util.ArrayList; import java.util.List; -import java.util.Map; import java.util.Set; import static org.jetbrains.kotlin.builtins.KotlinBuiltIns.isBoolean; import static org.jetbrains.kotlin.builtins.KotlinBuiltIns.isPrimitiveClass; +import static org.jetbrains.kotlin.codegen.AsmUtil.*; import static org.jetbrains.kotlin.codegen.CodegenUtilKt.isToArrayFromCollection; import static org.jetbrains.kotlin.codegen.JvmCodegenUtil.isConstOrHasJvmFieldAnnotation; import static org.jetbrains.kotlin.codegen.JvmCodegenUtil.isJvmInterface; @@ -70,81 +68,14 @@ import static org.jetbrains.kotlin.resolve.jvm.annotations.JvmAnnotationUtilKt.h import static org.jetbrains.kotlin.types.TypeUtils.isNullableType; import static org.jetbrains.org.objectweb.asm.Opcodes.*; -public class AsmUtil { - +public class DescriptorAsmUtil { private static final Set STRING_BUILDER_OBJECT_APPEND_ARG_TYPES = Sets.newHashSet( getType(String.class), getType(StringBuffer.class), getType(CharSequence.class) ); - private static final int NO_FLAG_LOCAL = 0; - public static final int NO_FLAG_PACKAGE_PRIVATE = 0; - - @NotNull - private static final Map visibilityToAccessFlag = ImmutableMap.builder() - .put(DescriptorVisibilities.PRIVATE, ACC_PRIVATE) - .put(DescriptorVisibilities.PRIVATE_TO_THIS, ACC_PRIVATE) - .put(DescriptorVisibilities.PROTECTED, ACC_PROTECTED) - .put(JavaDescriptorVisibilities.PROTECTED_STATIC_VISIBILITY, ACC_PROTECTED) - .put(JavaDescriptorVisibilities.PROTECTED_AND_PACKAGE, ACC_PROTECTED) - .put(DescriptorVisibilities.PUBLIC, ACC_PUBLIC) - .put(DescriptorVisibilities.INTERNAL, ACC_PUBLIC) - .put(DescriptorVisibilities.LOCAL, NO_FLAG_LOCAL) - .put(JavaDescriptorVisibilities.PACKAGE_VISIBILITY, NO_FLAG_PACKAGE_PRIVATE) - .build(); - - public static final String CAPTURED_PREFIX = "$"; - - public static final String THIS = "this"; - - public static final String THIS_IN_DEFAULT_IMPLS = "$this"; - - public static final String LABELED_THIS_FIELD = THIS + "_"; - - public static final String CAPTURED_LABELED_THIS_FIELD = CAPTURED_PREFIX + LABELED_THIS_FIELD; - - public static final String INLINE_DECLARATION_SITE_THIS = "this_"; - - public static final String LABELED_THIS_PARAMETER = CAPTURED_PREFIX + THIS + "$"; - - public static final String CAPTURED_THIS_FIELD = "this$0"; - - public static final String RECEIVER_PARAMETER_NAME = "$receiver"; - - /* - This is basically an old convention. Starting from Kotlin 1.3, it was replaced with `$this_