Collapse ranges for outline positions into one line
Bug: b/294904638
Change-Id: I89af320202301c543f81eb07aff90c8272e47617
diff --git a/src/main/java/com/android/tools/r8/utils/positions/MappedPositionToClassNameMapperBuilder.java b/src/main/java/com/android/tools/r8/utils/positions/MappedPositionToClassNameMapperBuilder.java
index 7c2c9d6..543e7d9 100644
--- a/src/main/java/com/android/tools/r8/utils/positions/MappedPositionToClassNameMapperBuilder.java
+++ b/src/main/java/com/android/tools/r8/utils/positions/MappedPositionToClassNameMapperBuilder.java
@@ -315,14 +315,16 @@
// multiple inlining passes lose the canonical property of the positions.
Position currentPosition = currentMappedPosition.getPosition();
Position lastPosition = lastMappedPosition.getPosition();
- if (currentPosition.getMethod() != lastPosition.getMethod()
- || mappedPositionRange.isOutOfRange()
+ if (mappedPositionRange.isOutOfRange()
+ // Check if inline positions has changed
+ || currentPosition.getMethod() != lastPosition.getMethod()
|| !Objects.equals(
currentPosition.getCallerPosition(), lastPosition.getCallerPosition())
- // Break when we see a mapped outline
- || currentPosition.getOutlineCallee() != null
- // Ensure that we break when we start iterating with an outline caller again.
- || firstMappedPosition.getPosition().getOutlineCallee() != null) {
+ // Check if outline positions has changed
+ || !Objects.equals(
+ currentPosition.getOutlineCallee(), lastPosition.getOutlineCallee())
+ || !Objects.equals(
+ currentPosition.getOutlinePositions(), lastPosition.getOutlinePositions())) {
break;
}
lastMappedPosition = currentMappedPosition;