Optimization in NestedSourceMapper
This commit is contained in:
@@ -30,20 +30,23 @@ open class NestedSourceMapper(
|
|||||||
override val parent: SourceMapper, val ranges: List<RangeMapping>, sourceInfo: SourceInfo
|
override val parent: SourceMapper, val ranges: List<RangeMapping>, sourceInfo: SourceInfo
|
||||||
) : DefaultSourceMapper(sourceInfo) {
|
) : DefaultSourceMapper(sourceInfo) {
|
||||||
|
|
||||||
val visited = TIntIntHashMap()
|
val visitedLines = TIntIntHashMap()
|
||||||
|
|
||||||
|
var lastVisitedRange: RangeMapping? = null
|
||||||
|
|
||||||
override fun visitLineNumber(iv: MethodVisitor, lineNumber: Int, start: Label) {
|
override fun visitLineNumber(iv: MethodVisitor, lineNumber: Int, start: Label) {
|
||||||
val mappedLineNumber = visited.get(lineNumber)
|
val mappedLineNumber = visitedLines.get(lineNumber)
|
||||||
|
|
||||||
if (mappedLineNumber > 0) {
|
if (mappedLineNumber > 0) {
|
||||||
iv.visitLineNumber(mappedLineNumber, start)
|
iv.visitLineNumber(mappedLineNumber, start)
|
||||||
} else {
|
} else {
|
||||||
val findMappingIfExists = findMappingIfExists(lineNumber)!!
|
val rangeForMapping = if (lastVisitedRange?.contains(lineNumber) ?: false) lastVisitedRange!! else findMappingIfExists(lineNumber)!!
|
||||||
val sourceLineNumber = findMappingIfExists.mapDestToSource(lineNumber)
|
val sourceLineNumber = rangeForMapping.mapDestToSource(lineNumber)
|
||||||
val visitLineNumber = parent.visitLineNumber(iv, start, sourceLineNumber, findMappingIfExists.parent!!.name, findMappingIfExists.parent!!.path)
|
val visitLineNumber = parent.visitLineNumber(iv, start, sourceLineNumber, rangeForMapping.parent!!.name, rangeForMapping.parent!!.path)
|
||||||
if (visitLineNumber > 0) {
|
if (visitLineNumber > 0) {
|
||||||
visited.put(lineNumber, visitLineNumber)
|
visitedLines.put(lineNumber, visitLineNumber)
|
||||||
}
|
}
|
||||||
|
lastVisitedRange = rangeForMapping
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user