Fix bug in Value.getBaseline().
The method wasn't being overridden by InstanceValue.getBaseline as
intended, which would lead to broken links in the UI.
Test: m ahat-test, with regression test added.
Test: Manually confirm a link to a "was" part of a diffed field works
in the UI.
Bug: 77943151
Change-Id: I98a40afe2161617ba2199574b4fd57a076fc8bde
diff --git a/tools/ahat/src/main/com/android/ahat/heapdump/Value.java b/tools/ahat/src/main/com/android/ahat/heapdump/Value.java
index b219bf1..d78f95b 100644
--- a/tools/ahat/src/main/com/android/ahat/heapdump/Value.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/Value.java
@@ -209,7 +209,7 @@
@Override
public abstract String toString();
- private Value getBaseline() {
+ Value getBaseline() {
return this;
}
@@ -396,7 +396,8 @@
return mInstance.toString();
}
- public Value getBaseline() {
+ @Override
+ Value getBaseline() {
return InstanceValue.pack(mInstance.getBaseline());
}
diff --git a/tools/ahat/src/test/com/android/ahat/DiffTest.java b/tools/ahat/src/test/com/android/ahat/DiffTest.java
index 585f29a..b1952b2 100644
--- a/tools/ahat/src/test/com/android/ahat/DiffTest.java
+++ b/tools/ahat/src/test/com/android/ahat/DiffTest.java
@@ -18,6 +18,7 @@
import com.android.ahat.heapdump.AhatHeap;
import com.android.ahat.heapdump.AhatInstance;
+import com.android.ahat.heapdump.Value;
import java.io.IOException;
import org.junit.Test;
@@ -51,6 +52,9 @@
assertEquals(b, a.getBaseline());
assertEquals(a.getSite(), b.getSite().getBaseline());
assertEquals(b.getSite(), a.getSite().getBaseline());
+
+ Value va = Value.pack(a);
+ assertEquals(b, Value.getBaseline(va).asAhatInstance());
}
@Test