From 2cec779c14e3e957f760d27650b2b28d4a3b8aaf Mon Sep 17 00:00:00 2001 From: Michael Bogdanov Date: Wed, 20 Apr 2016 12:52:02 +0300 Subject: [PATCH] 'visitLineNumber' replaced with 'mapLineNumber' in SourceMapper --- .../kotlin/codegen/inline/InlineAdapter.java | 7 ++-- .../jetbrains/kotlin/codegen/inline/SMAP.kt | 34 +++++++++---------- 2 files changed, 18 insertions(+), 23 deletions(-) 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 110d194ba7b..33fb3514659 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineAdapter.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineAdapter.java @@ -19,7 +19,6 @@ package org.jetbrains.kotlin.codegen.inline; import org.jetbrains.annotations.NotNull; 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; @@ -90,11 +89,9 @@ public class InlineAdapter extends InstructionAdapter { @Override public void visitLineNumber(int line, Label start) { if (InlineCodegenUtil.GENERATE_SMAP) { - sourceMapper.visitLineNumber(mv, line, start); - } - else { - super.visitLineNumber(line, start); + line = sourceMapper.mapLineNumber(line); } + super.visitLineNumber(line, start); } @Override diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/SMAP.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/SMAP.kt index 4d8329a1849..b6995ec9784 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/SMAP.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/SMAP.kt @@ -92,19 +92,20 @@ open class NestedSourceMapper( var lastVisitedRange: RangeMapping? = null - override fun visitLineNumber(iv: MethodVisitor, lineNumber: Int, start: Label) { + override fun mapLineNumber(lineNumber: Int): Int { val mappedLineNumber = visitedLines.get(lineNumber) if (mappedLineNumber > 0) { - iv.visitLineNumber(mappedLineNumber, start) + return mappedLineNumber } else { val rangeForMapping = if (lastVisitedRange?.contains(lineNumber) ?: false) lastVisitedRange!! else findMappingIfExists(lineNumber)!! val sourceLineNumber = rangeForMapping.mapDestToSource(lineNumber) - val visitLineNumber = parent.visitLineNumber(iv, start, sourceLineNumber, rangeForMapping.parent!!.name, rangeForMapping.parent!!.path) - if (visitLineNumber > 0) { - visitedLines.put(lineNumber, visitLineNumber) + val newLineNumber = parent.mapLineNumber(sourceLineNumber, rangeForMapping.parent!!.name, rangeForMapping.parent!!.path) + if (newLineNumber > 0) { + visitedLines.put(lineNumber, newLineNumber) } lastVisitedRange = rangeForMapping + return newLineNumber } } @@ -127,13 +128,13 @@ open class InlineLambdaSourceMapper( } } - override fun visitLineNumber(iv: MethodVisitor, lineNumber: Int, start: Label) { + override fun mapLineNumber(lineNumber: Int): Int { if (ranges.firstOrNull()?.contains(lineNumber) ?: false) { //don't remap origin lambda line numbers - iv.visitLineNumber(lineNumber, start) + return lineNumber } else { - super.visitLineNumber(iv, lineNumber, start) + return super.mapLineNumber(lineNumber) } } } @@ -143,11 +144,11 @@ interface SourceMapper { val parent: SourceMapper? get() = null - fun visitLineNumber(iv: MethodVisitor, lineNumber: Int, start: Label) { + fun mapLineNumber(lineNumber: Int): Int { throw UnsupportedOperationException("fail") } - fun visitLineNumber(iv: MethodVisitor, start: Label, source: Int, sourceName: String, sourcePath:String): Int { + fun mapLineNumber(source: Int, sourceName: String, sourcePath: String): Int { throw UnsupportedOperationException("fail") } @@ -173,9 +174,7 @@ object IdenticalSourceMapper : SourceMapper { override val parent: SourceMapper? get() = null - override fun visitLineNumber(iv: MethodVisitor, lineNumber: Int, start: Label) { - iv.visitLineNumber(lineNumber, start) - } + override fun mapLineNumber(lineNumber: Int) = lineNumber } class CallSiteMarker(val lineNumber: Int) @@ -226,21 +225,20 @@ open class DefaultSourceMapper(val sourceInfo: SourceInfo) : SourceMapper { return fileMappings.getOrPut(createKey(name, path)) { RawFileMapping(name, path) } } - override fun visitLineNumber(iv: MethodVisitor, lineNumber: Int, start: Label) { + override fun mapLineNumber(lineNumber: Int): Int { if (lineNumber < 0) { //no source information, so just skip this linenumber - return + return - 1 } - iv.visitLineNumber(lineNumber, start) + return lineNumber } - override fun visitLineNumber(iv: MethodVisitor, start: Label, source: Int, sourceName: String, sourcePath: String): Int { + override fun mapLineNumber(source: Int, sourceName: String, sourcePath: String): Int { if (source < 0) { //no source information, so just skip this linenumber return -1 } val mappedLineIndex = createMapping(getOrRegisterNewSource(sourceName, sourcePath), source) - iv.visitLineNumber(mappedLineIndex, start) return mappedLineIndex }