[Retrace] Single pipeline for retracing source file
Change-Id: I8928b02dcb1312c327d4158fb9500e736447e884
diff --git a/src/main/java/com/android/tools/r8/retrace/RetracedSourceFile.java b/src/main/java/com/android/tools/r8/retrace/RetracedSourceFile.java
index d1d3542..1536645 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetracedSourceFile.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetracedSourceFile.java
@@ -13,5 +13,5 @@
String getSourceFile();
- String getOrInferSourceFile();
+ String getOrInferSourceFile(String original);
}
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/RetraceThrownExceptionResultImpl.java b/src/main/java/com/android/tools/r8/retrace/internal/RetraceThrownExceptionResultImpl.java
index e3d5dc2..3488823 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/RetraceThrownExceptionResultImpl.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/RetraceThrownExceptionResultImpl.java
@@ -88,7 +88,7 @@
}
}
}
- return new RetracedSourceFileImpl(getRetracedClass().getClassReference(), sourceFile);
+ return new RetracedSourceFileImpl(getRetracedClass(), sourceFile);
}
@Override
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/RetraceUtils.java b/src/main/java/com/android/tools/r8/retrace/internal/RetraceUtils.java
index 0180960..b339440 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/RetraceUtils.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/RetraceUtils.java
@@ -68,8 +68,7 @@
public static RetracedSourceFile getSourceFile(
RetracedClassReference holder, RetracerImpl retracer) {
- ClassReference holderReference = holder.getClassReference();
- return new RetracedSourceFileImpl(holderReference, retracer.getSourceFile(holderReference));
+ return new RetracedSourceFileImpl(holder, retracer.getSourceFile(holder.getClassReference()));
}
public static String inferSourceFile(
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/RetracedSourceFileImpl.java b/src/main/java/com/android/tools/r8/retrace/internal/RetracedSourceFileImpl.java
index c7f2fae..9d4fa1e 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/RetracedSourceFileImpl.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/RetracedSourceFileImpl.java
@@ -4,15 +4,15 @@
package com.android.tools.r8.retrace.internal;
-import com.android.tools.r8.references.ClassReference;
+import com.android.tools.r8.retrace.RetracedClassReference;
import com.android.tools.r8.retrace.RetracedSourceFile;
public class RetracedSourceFileImpl implements RetracedSourceFile {
- private final ClassReference classReference;
+ private final RetracedClassReference classReference;
private final String filename;
- RetracedSourceFileImpl(ClassReference classReference, String filename) {
+ RetracedSourceFileImpl(RetracedClassReference classReference, String filename) {
assert classReference != null;
this.classReference = classReference;
this.filename = filename;
@@ -29,10 +29,13 @@
}
@Override
- public String getOrInferSourceFile() {
- String sourceFile = getSourceFile();
+ public String getOrInferSourceFile(String original) {
+ String sourceFile = filename;
return sourceFile != null
? sourceFile
- : RetraceUtils.inferSourceFile(classReference.getTypeName(), "", true);
+ : RetraceUtils.inferSourceFile(
+ classReference.getTypeName(),
+ original == null ? "" : original,
+ classReference.isKnown());
}
}
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/StackTraceElementProxyRetracerImpl.java b/src/main/java/com/android/tools/r8/retrace/internal/StackTraceElementProxyRetracerImpl.java
index 86e9046..18623af 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/StackTraceElementProxyRetracerImpl.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/StackTraceElementProxyRetracerImpl.java
@@ -437,13 +437,12 @@
@Override
public String getSourceFile() {
- if (sourceFile != null && sourceFile.hasRetraceResult()) {
- return sourceFile.getSourceFile();
+ if (sourceFile == null) {
+ assert originalItem.getSourceFile() == null;
+ return null;
}
- String originalSourceFile =
- originalItem.getSourceFile() == null ? "" : originalItem.getSourceFile();
- return RetraceUtils.inferSourceFile(
- retracedClass.getTypeName(), originalSourceFile, retracedClass.isKnown());
+ return sourceFile.getOrInferSourceFile(
+ originalItem.getSourceFile() == null ? "" : originalItem.getSourceFile());
}
@Override
diff --git a/src/test/java/com/android/tools/r8/retrace/api/RetraceApiProxyFrameWithSourceFileTest.java b/src/test/java/com/android/tools/r8/retrace/api/RetraceApiProxyFrameWithSourceFileTest.java
index 889f0d9..26fac27 100644
--- a/src/test/java/com/android/tools/r8/retrace/api/RetraceApiProxyFrameWithSourceFileTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/api/RetraceApiProxyFrameWithSourceFileTest.java
@@ -133,7 +133,7 @@
+ "."
+ getMethodName()
+ "("
- + retracedProxy.getRetracedSourceFile().getOrInferSourceFile()
+ + retracedProxy.getRetracedSourceFile().getOrInferSourceFile(getSourceFile())
+ ")";
}
}
diff --git a/src/test/java/com/android/tools/r8/retrace/api/RetracePartitionRoundTripInlineTest.java b/src/test/java/com/android/tools/r8/retrace/api/RetracePartitionRoundTripInlineTest.java
index 5d78d68..66cc1ef 100644
--- a/src/test/java/com/android/tools/r8/retrace/api/RetracePartitionRoundTripInlineTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/api/RetracePartitionRoundTripInlineTest.java
@@ -111,7 +111,7 @@
// Check that visiting all frames report all source files.
List<String> allSourceFiles =
retraceFrameElement.stream()
- .map(x -> x.getSourceFile().getOrInferSourceFile())
+ .map(x -> x.getSourceFile().getOrInferSourceFile(""))
.collect(Collectors.toList());
assertEquals(Arrays.asList("InlineeClass.kt", "CallerClass.kt"), allSourceFiles);
}
diff --git a/src/test/java/com/android/tools/r8/retrace/partition/RetracePartitionMultipleOutlineClassTest.java b/src/test/java/com/android/tools/r8/retrace/partition/RetracePartitionMultipleOutlineClassTest.java
index 9175f41..24dfbf3 100644
--- a/src/test/java/com/android/tools/r8/retrace/partition/RetracePartitionMultipleOutlineClassTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/partition/RetracePartitionMultipleOutlineClassTest.java
@@ -142,7 +142,7 @@
// Check that visiting all frames report all source files.
List<String> allSourceFiles =
retraceFrameElement.stream()
- .map(x -> x.getSourceFile().getOrInferSourceFile())
+ .map(x -> x.getSourceFile().getOrInferSourceFile(""))
.collect(Collectors.toList());
assertEquals(Arrays.asList("InlineeClass.kt", "CallerClass.kt"), allSourceFiles);
}