From 026ac1bee64faaf1c65e9cbfc41fcc8ed66d37cf Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Wed, 19 Dec 2018 16:31:00 +0100 Subject: [PATCH] Inline API constant --- .../codegen/inline/AnonymousObjectTransformer.kt | 2 +- .../kotlin/codegen/inline/DeferredMethodVisitor.kt | 3 ++- .../kotlin/codegen/inline/InlineAdapter.java | 4 ++-- .../jetbrains/kotlin/codegen/inline/InlineCodegen.kt | 2 +- .../inline/InlineMethodInstructionAdapter.java | 3 ++- .../codegen/inline/InternalFinallyBlockInliner.java | 2 +- .../org/jetbrains/kotlin/codegen/inline/LambdaInfo.kt | 5 +++-- .../kotlin/codegen/inline/MethodBodyVisitor.kt | 9 +++------ .../jetbrains/kotlin/codegen/inline/MethodInliner.kt | 6 +++--- .../kotlin/codegen/inline/ObjectTransformer.kt | 2 +- .../kotlin/codegen/inline/ReifiedTypeInliner.kt | 4 ++-- .../kotlin/codegen/inline/SamWrapperTransformer.kt | 3 ++- .../kotlin/codegen/inline/SourceCompilerForInline.kt | 2 +- .../kotlin/codegen/inline/inlineCodegenUtils.kt | 11 +++++------ .../backend/jvm/codegen/IrSourceCompilerForInline.kt | 7 ++----- .../idea/debugger/NoStrataPositionManagerHelper.kt | 3 +-- .../org/jetbrains/kotlin/idea/debugger/smapUtil.kt | 4 ++-- 17 files changed, 34 insertions(+), 38 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/AnonymousObjectTransformer.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/AnonymousObjectTransformer.kt index e330c8a5d0d..7cc11b89324 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/AnonymousObjectTransformer.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/AnonymousObjectTransformer.kt @@ -52,7 +52,7 @@ class AnonymousObjectTransformer( val metadataReader = ReadKotlinClassHeaderAnnotationVisitor() lateinit var superClassName: String - createClassReader().accept(object : ClassVisitor(API, classBuilder.visitor) { + createClassReader().accept(object : ClassVisitor(Opcodes.API_VERSION, classBuilder.visitor) { override fun visit(version: Int, access: Int, name: String, signature: String?, superName: String, interfaces: Array) { classBuilder.defineClass(null, version, access, name, signature, superName, interfaces) if (languageVersionSettings.isCoroutineSuperClass(superName)) { diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/DeferredMethodVisitor.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/DeferredMethodVisitor.kt index 6ff841d43c2..60a510c5cde 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/DeferredMethodVisitor.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/DeferredMethodVisitor.kt @@ -17,12 +17,13 @@ package org.jetbrains.kotlin.codegen.inline import org.jetbrains.org.objectweb.asm.MethodVisitor +import org.jetbrains.org.objectweb.asm.Opcodes import org.jetbrains.org.objectweb.asm.tree.MethodNode class DeferredMethodVisitor( val intermediate: MethodNode, private val resultNode: () -> MethodVisitor -) : MethodVisitor(API, intermediate) { +) : MethodVisitor(Opcodes.API_VERSION, intermediate) { override fun visitEnd() { super.visitEnd() diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineAdapter.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineAdapter.java index 2a0a3e02162..f8862b08e0b 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineAdapter.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineAdapter.java @@ -20,12 +20,12 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.org.objectweb.asm.Label; import org.jetbrains.org.objectweb.asm.MethodVisitor; +import org.jetbrains.org.objectweb.asm.Opcodes; import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter; import java.util.ArrayList; import java.util.List; -import static org.jetbrains.kotlin.codegen.inline.InlineCodegenUtilsKt.API; import static org.jetbrains.kotlin.codegen.inline.InlineCodegenUtilsKt.GENERATE_SMAP; import static org.jetbrains.kotlin.codegen.inline.InlineCodegenUtilsKt.getLoadStoreArgSize; @@ -38,7 +38,7 @@ public class InlineAdapter extends InstructionAdapter { private int nextLocalIndexBeforeInline = -1; public InlineAdapter(@NotNull MethodVisitor mv, int localsSize, @NotNull SourceMapper sourceMapper) { - super(API, mv); + super(Opcodes.API_VERSION, mv); this.nextLocalIndex = localsSize; this.sourceMapper = sourceMapper; } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.kt index cb26f0f8fa4..3f0d5152e09 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.kt @@ -542,7 +542,7 @@ abstract class InlineCodegen( private fun cloneMethodNode(methodNode: MethodNode): MethodNode { methodNode.instructions.resetLabels() return MethodNode( - API, methodNode.access, methodNode.name, methodNode.desc, methodNode.signature, + Opcodes.API_VERSION, methodNode.access, methodNode.name, methodNode.desc, methodNode.signature, ArrayUtil.toStringArray(methodNode.exceptions) ).also(methodNode::accept) } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineMethodInstructionAdapter.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineMethodInstructionAdapter.java index b0bc9f8c96e..db558f89e84 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineMethodInstructionAdapter.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineMethodInstructionAdapter.java @@ -6,12 +6,13 @@ package org.jetbrains.kotlin.codegen.inline; import org.jetbrains.org.objectweb.asm.MethodVisitor; +import org.jetbrains.org.objectweb.asm.Opcodes; import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter; public class InlineMethodInstructionAdapter extends InstructionAdapter { InlineMethodInstructionAdapter(MethodVisitor methodVisitor) { - super(InlineCodegenUtilsKt.API, methodVisitor); + super(Opcodes.API_VERSION, methodVisitor); } public void visitAnnotableParameterCount(int parameterCount, boolean visible) { diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InternalFinallyBlockInliner.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InternalFinallyBlockInliner.java index 3c0bd9d54d0..9d63df08747 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InternalFinallyBlockInliner.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InternalFinallyBlockInliner.java @@ -105,7 +105,7 @@ public class InternalFinallyBlockInliner extends CoveringTryCatchNodeProcessor { private int initAndGetVarIndexForNonLocalReturnValue() { MaxLocalsCalculator tempCalcNode = new MaxLocalsCalculator( - API, + Opcodes.API_VERSION, inlineFun.access, inlineFun.desc, null ); inlineFun.accept(tempCalcNode); diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/LambdaInfo.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/LambdaInfo.kt index 0cc7a4737a4..10e953e256f 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/LambdaInfo.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/LambdaInfo.kt @@ -27,6 +27,7 @@ import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.util.OperatorNameConventions import org.jetbrains.org.objectweb.asm.ClassReader import org.jetbrains.org.objectweb.asm.ClassVisitor +import org.jetbrains.org.objectweb.asm.Opcodes import org.jetbrains.org.objectweb.asm.Type import org.jetbrains.org.objectweb.asm.commons.Method import org.jetbrains.org.objectweb.asm.tree.FieldInsnNode @@ -106,7 +107,7 @@ class DefaultLambda( val classReader = buildClassReaderByInternalName(sourceCompiler.state, lambdaClassType.internalName) var isPropertyReference = false var isFunctionReference = false - classReader.accept(object : ClassVisitor(API) { + classReader.accept(object : ClassVisitor(Opcodes.API_VERSION) { override fun visit( version: Int, access: Int, @@ -187,7 +188,7 @@ abstract class ExpressionLambda(protected val typeMapper: KotlinTypeMapper, isCr val jvmMethodSignature = typeMapper.mapSignatureSkipGeneric(invokeMethodDescriptor) val asmMethod = jvmMethodSignature.asmMethod val methodNode = MethodNode( - API, AsmUtil.getMethodAsmFlags(invokeMethodDescriptor, OwnerKind.IMPLEMENTATION, sourceCompiler.state), + Opcodes.API_VERSION, AsmUtil.getMethodAsmFlags(invokeMethodDescriptor, OwnerKind.IMPLEMENTATION, sourceCompiler.state), asmMethod.name, asmMethod.descriptor, null, null ) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodBodyVisitor.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodBodyVisitor.kt index d400372df36..f81ab391463 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodBodyVisitor.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodBodyVisitor.kt @@ -16,19 +16,16 @@ package org.jetbrains.kotlin.codegen.inline -import org.jetbrains.org.objectweb.asm.AnnotationVisitor -import org.jetbrains.org.objectweb.asm.Attribute -import org.jetbrains.org.objectweb.asm.MethodVisitor -import org.jetbrains.org.objectweb.asm.TypePath +import org.jetbrains.org.objectweb.asm.* import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter -open class SkipMaxAndEndVisitor(mv: MethodVisitor) : InstructionAdapter(API, mv) { +open class SkipMaxAndEndVisitor(mv: MethodVisitor) : InstructionAdapter(Opcodes.API_VERSION, mv) { override fun visitMaxs(maxStack: Int, maxLocals: Int) {} override fun visitEnd() {} } -open class MethodBodyVisitor(mv: MethodVisitor) : MethodVisitor(API, mv) { +open class MethodBodyVisitor(mv: MethodVisitor) : MethodVisitor(Opcodes.API_VERSION, mv) { @Suppress("NOTHING_TO_OVERRIDE") override fun visitAnnotableParameterCount(parameterCount: Int, visible: Boolean) { diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt index 0825dfb4ea4..535e06be3a3 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt @@ -107,8 +107,8 @@ class MethodInliner( transformedNode.instructions.resetLabels() val resultNode = MethodNode( - API, transformedNode.access, transformedNode.name, transformedNode.desc, - transformedNode.signature, transformedNode.exceptions?.toTypedArray() + Opcodes.API_VERSION, transformedNode.access, transformedNode.name, transformedNode.desc, + transformedNode.signature, transformedNode.exceptions?.toTypedArray() ) val visitor = RemapVisitor(resultNode, remapper, nodeRemapper) @@ -407,7 +407,7 @@ class MethodInliner( val capturedParamsSize = parameters.capturedParametersSizeOnStack val realParametersSize = parameters.realParametersSizeOnStack val transformedNode = MethodNode( - API, node.access, node.name, + Opcodes.API_VERSION, node.access, node.name, Type.getMethodDescriptor(Type.getReturnType(node.desc), *(Type.getArgumentTypes(node.desc) + parameters.capturedTypes)), node.signature, node.exceptions?.toTypedArray() ) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ObjectTransformer.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ObjectTransformer.kt index a43889cc107..c3638c35da1 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ObjectTransformer.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ObjectTransformer.kt @@ -64,7 +64,7 @@ class WhenMappingTransformer( /*MAPPING File could contains mappings for several enum classes, we should filter one*/ val methodNodes = arrayListOf() val fieldNode = transformationInfo.fieldNode - classReader.accept(object : ClassVisitor(API, classBuilder.visitor) { + classReader.accept(object : ClassVisitor(Opcodes.API_VERSION, classBuilder.visitor) { override fun visit(version: Int, access: Int, name: String, signature: String?, superName: String, interfaces: Array) { classBuilder.defineClass(null, version, access, name, signature, superName, interfaces) } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ReifiedTypeInliner.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ReifiedTypeInliner.kt index 0228822eaad..3fd1cfe8603 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ReifiedTypeInliner.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ReifiedTypeInliner.kt @@ -167,7 +167,7 @@ class ReifiedTypeInliner(private val parametersMapping: TypeParameterMappings?, ) = rewriteNextTypeInsn(insn, Opcodes.CHECKCAST) { stubCheckcast: AbstractInsnNode -> if (stubCheckcast !is TypeInsnNode) return false - val newMethodNode = MethodNode(API) + val newMethodNode = MethodNode(Opcodes.API_VERSION) generateAsCast(InstructionAdapter(newMethodNode), kotlinType, asmType, safe, isReleaseCoroutines) instructions.insert(insn, newMethodNode.instructions) @@ -187,7 +187,7 @@ class ReifiedTypeInliner(private val parametersMapping: TypeParameterMappings?, ) = rewriteNextTypeInsn(insn, Opcodes.INSTANCEOF) { stubInstanceOf: AbstractInsnNode -> if (stubInstanceOf !is TypeInsnNode) return false - val newMethodNode = MethodNode(API) + val newMethodNode = MethodNode(Opcodes.API_VERSION) generateIsCheck(InstructionAdapter(newMethodNode), kotlinType, asmType, isReleaseCoroutines) instructions.insert(insn, newMethodNode.instructions) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/SamWrapperTransformer.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/SamWrapperTransformer.kt index d9f5343ac12..cf2246ff549 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/SamWrapperTransformer.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/SamWrapperTransformer.kt @@ -18,6 +18,7 @@ package org.jetbrains.kotlin.codegen.inline import org.jetbrains.org.objectweb.asm.ClassReader import org.jetbrains.org.objectweb.asm.ClassVisitor +import org.jetbrains.org.objectweb.asm.Opcodes class SamWrapperTransformationInfo(override val oldClassName: String, private val inliningContext: InliningContext, private val alreadyRegenerated: Boolean): TransformationInfo { override val nameGenerator: NameGenerator @@ -54,7 +55,7 @@ class SamWrapperTransformer(transformationInfo: SamWrapperTransformationInfo, pr val classReader = createClassReader() val classBuilder = createRemappingClassBuilderViaFactory(inliningContext) - classReader.accept(object : ClassVisitor(API, classBuilder.visitor) { + classReader.accept(object : ClassVisitor(Opcodes.API_VERSION, classBuilder.visitor) { override fun visit(version: Int, access: Int, name: String, signature: String?, superName: String, interfaces: Array) { classBuilder.defineClass(null, version, access, name, signature, superName, interfaces) } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/SourceCompilerForInline.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/SourceCompilerForInline.kt index 6c0047551b7..8b48cf82d49 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/SourceCompilerForInline.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/SourceCompilerForInline.kt @@ -273,7 +273,7 @@ class PsiSourceCompilerForInline(private val codegen: ExpressionCodegen, overrid val inliningFunction = element as KtDeclarationWithBody? val node = MethodNode( - API, + Opcodes.API_VERSION, AsmUtil.getMethodAsmFlags(callableDescriptor, context.contextKind, state) or if (callDefault) Opcodes.ACC_STATIC else 0, asmMethod.name, asmMethod.descriptor, null, null diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/inlineCodegenUtils.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/inlineCodegenUtils.kt index 9ed4378171e..cfb25dcfd09 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/inlineCodegenUtils.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/inlineCodegenUtils.kt @@ -56,7 +56,6 @@ import java.io.PrintWriter import java.io.StringWriter const val GENERATE_SMAP = true -const val API = Opcodes.API_VERSION const val NUMBERED_FUNCTION_PREFIX = "kotlin/jvm/functions/Function" const val INLINE_FUN_VAR_SUFFIX = "\$iv" @@ -98,7 +97,7 @@ internal fun getMethodNode( lines[0] = Integer.MAX_VALUE lines[1] = Integer.MIN_VALUE - cr.accept(object : ClassVisitor(API) { + cr.accept(object : ClassVisitor(Opcodes.API_VERSION) { override fun visitSource(source: String?, debug: String?) { super.visitSource(source, debug) @@ -114,7 +113,7 @@ internal fun getMethodNode( exceptions: Array? ): MethodVisitor? { if (methodName == name && methodDescriptor == desc) { - node = object : MethodNode(API, access, name, desc, signature, exceptions) { + node = object : MethodNode(Opcodes.API_VERSION, access, name, desc, signature, exceptions) { override fun visitLineNumber(line: Int, start: Label) { super.visitLineNumber(line, start) lines[0] = Math.min(lines[0], line) @@ -240,7 +239,7 @@ internal fun isAnonymousClass(internalName: String) = internalName.substringAfterLast('/').substringAfterLast("$", "").isInteger() fun wrapWithMaxLocalCalc(methodNode: MethodNode) = - MaxStackFrameSizeAndLocalsCalculator(API, methodNode.access, methodNode.desc, methodNode) + MaxStackFrameSizeAndLocalsCalculator(Opcodes.API_VERSION, methodNode.access, methodNode.desc, methodNode) private fun String.isInteger(radix: Int = 10) = toIntOrNull(radix) != null @@ -292,7 +291,7 @@ internal fun insertNodeBefore(from: MethodNode, to: MethodNode, beforeNode: Abst } } -internal fun createEmptyMethodNode() = MethodNode(API, 0, "fake", "()V", null, null) +internal fun createEmptyMethodNode() = MethodNode(Opcodes.API_VERSION, 0, "fake", "()V", null, null) internal fun createFakeContinuationMethodNodeForInline(): MethodNode { val methodNode = createEmptyMethodNode() @@ -543,7 +542,7 @@ internal fun createSpecialEnumMethodBody( val isValueOf = "enumValueOf" == name val invokeType = typeMapper.mapType(type) val desc = getSpecialEnumFunDescriptor(invokeType, isValueOf) - val node = MethodNode(API, Opcodes.ACC_STATIC, "fake", desc, null, null) + val node = MethodNode(Opcodes.API_VERSION, Opcodes.ACC_STATIC, "fake", desc, null, null) ExpressionCodegen.putReifiedOperationMarkerIfTypeIsReifiedParameterWithoutPropagation( type, ReifiedTypeInliner.OperationKind.ENUM_REIFIED, diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrSourceCompilerForInline.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrSourceCompilerForInline.kt index 2e3380c5821..f265de15656 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrSourceCompilerForInline.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrSourceCompilerForInline.kt @@ -36,10 +36,7 @@ import org.jetbrains.kotlin.load.java.JvmAbi import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodGenericSignature import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature -import org.jetbrains.org.objectweb.asm.AnnotationVisitor -import org.jetbrains.org.objectweb.asm.ClassVisitor -import org.jetbrains.org.objectweb.asm.FieldVisitor -import org.jetbrains.org.objectweb.asm.MethodVisitor +import org.jetbrains.org.objectweb.asm.* import org.jetbrains.org.objectweb.asm.commons.Method import org.jetbrains.org.objectweb.asm.tree.MethodNode @@ -118,7 +115,7 @@ class IrSourceCompilerForInline( val functionCodegen = object : FunctionCodegen(irFunction, fakeClassCodegen) { override fun createMethod(flags: Int, signature: JvmMethodGenericSignature): MethodVisitor { node = MethodNode( - API, + Opcodes.API_VERSION, flags, signature.asmMethod.name, signature.asmMethod.descriptor, signature.genericsSignature, null diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/NoStrataPositionManagerHelper.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/NoStrataPositionManagerHelper.kt index d765bc18291..b518dde8b77 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/NoStrataPositionManagerHelper.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/NoStrataPositionManagerHelper.kt @@ -29,7 +29,6 @@ import com.intellij.psi.search.GlobalSearchScope import com.intellij.util.containers.ConcurrentFactoryMap import com.sun.jdi.Location import com.sun.jdi.ReferenceType -import org.jetbrains.kotlin.codegen.inline.API import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinDebuggerCaches import org.jetbrains.kotlin.idea.refactoring.getLineCount @@ -204,7 +203,7 @@ private fun findClassFileByPath(packageName: String, className: String, outputDi private fun readLineNumberTableMapping(bytes: ByteArray): Map>> { val lineNumberMapping = HashMap>>() - ClassReader(bytes).accept(object : ClassVisitor(API) { + ClassReader(bytes).accept(object : ClassVisitor(Opcodes.API_VERSION) { override fun visitMethod(access: Int, name: String?, desc: String?, signature: String?, exceptions: Array?): MethodVisitor? { if (name == null || desc == null) { return null diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/smapUtil.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/smapUtil.kt index 22c5559b61f..08385f8f581 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/smapUtil.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/smapUtil.kt @@ -18,7 +18,6 @@ package org.jetbrains.kotlin.idea.debugger import com.intellij.openapi.project.Project import com.intellij.psi.search.GlobalSearchScope -import org.jetbrains.kotlin.codegen.inline.API import org.jetbrains.kotlin.codegen.inline.FileMapping import org.jetbrains.kotlin.codegen.inline.SMAP import org.jetbrains.kotlin.codegen.inline.SMAPParser @@ -26,6 +25,7 @@ import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.jvm.JvmClassName import org.jetbrains.org.objectweb.asm.ClassReader import org.jetbrains.org.objectweb.asm.ClassVisitor +import org.jetbrains.org.objectweb.asm.Opcodes enum class SourceLineKind { CALL_LINE, @@ -62,7 +62,7 @@ fun mapStacktraceLineToSource(smapData: SmapData, fun readDebugInfo(bytes: ByteArray): SmapData? { val cr = ClassReader(bytes) var debugInfo: String? = null - cr.accept(object : ClassVisitor(API) { + cr.accept(object : ClassVisitor(Opcodes.API_VERSION) { override fun visitSource(source: String?, debug: String?) { debugInfo = debug }