summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/ahat/Android.mk20
-rw-r--r--tools/ahat/etc/L.hprof (renamed from tools/ahat/test-dump/L.hprof)bin11930828 -> 11930828 bytes
-rw-r--r--tools/ahat/etc/O.hprof (renamed from tools/ahat/test-dump/O.hprof)bin5921872 -> 5921872 bytes
-rw-r--r--tools/ahat/etc/README.txt9
-rw-r--r--tools/ahat/etc/RI.hprof (renamed from tools/ahat/test-dump/RI.hprof)bin1819716 -> 1819716 bytes
-rw-r--r--tools/ahat/etc/ahat-tests.mf (renamed from tools/ahat/test/manifest.txt)0
-rw-r--r--tools/ahat/etc/ahat.mf (renamed from tools/ahat/src/manifest.txt)0
-rw-r--r--tools/ahat/etc/style.css (renamed from tools/ahat/src/style.css)0
-rw-r--r--tools/ahat/etc/test-dump.pro (renamed from tools/ahat/test-dump/config.pro)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/AhatHandler.java (renamed from tools/ahat/src/AhatHandler.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/AhatHttpHandler.java (renamed from tools/ahat/src/AhatHttpHandler.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/BitmapHandler.java (renamed from tools/ahat/src/BitmapHandler.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/Column.java (renamed from tools/ahat/src/Column.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/Doc.java (renamed from tools/ahat/src/Doc.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/DocString.java (renamed from tools/ahat/src/DocString.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/DominatedList.java (renamed from tools/ahat/src/DominatedList.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/HeapTable.java (renamed from tools/ahat/src/HeapTable.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/HtmlDoc.java (renamed from tools/ahat/src/HtmlDoc.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/HtmlEscaper.java (renamed from tools/ahat/src/HtmlEscaper.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/Main.java (renamed from tools/ahat/src/Main.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/Menu.java (renamed from tools/ahat/src/Menu.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/ObjectHandler.java (renamed from tools/ahat/src/ObjectHandler.java)57
-rw-r--r--tools/ahat/src/main/com/android/ahat/ObjectsHandler.java (renamed from tools/ahat/src/ObjectsHandler.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/OverviewHandler.java (renamed from tools/ahat/src/OverviewHandler.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/Query.java (renamed from tools/ahat/src/Query.java)4
-rw-r--r--tools/ahat/src/main/com/android/ahat/RootedHandler.java (renamed from tools/ahat/src/RootedHandler.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/SiteHandler.java (renamed from tools/ahat/src/SiteHandler.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/SitePrinter.java (renamed from tools/ahat/src/SitePrinter.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/SizeTable.java (renamed from tools/ahat/src/SizeTable.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/StaticHandler.java (renamed from tools/ahat/src/StaticHandler.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/SubsetSelector.java (renamed from tools/ahat/src/SubsetSelector.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/Summarizer.java (renamed from tools/ahat/src/Summarizer.java)8
-rw-r--r--tools/ahat/src/main/com/android/ahat/dominators/DominatorsComputation.java (renamed from tools/ahat/src/dominators/DominatorsComputation.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/AhatArrayInstance.java (renamed from tools/ahat/src/heapdump/AhatArrayInstance.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/AhatClassInstance.java (renamed from tools/ahat/src/heapdump/AhatClassInstance.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/AhatClassObj.java (renamed from tools/ahat/src/heapdump/AhatClassObj.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/AhatField.java (renamed from tools/ahat/src/heapdump/AhatField.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/AhatHeap.java (renamed from tools/ahat/src/heapdump/AhatHeap.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/AhatInstance.java (renamed from tools/ahat/src/heapdump/AhatInstance.java)23
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/AhatPlaceHolderClassObj.java (renamed from tools/ahat/src/heapdump/AhatPlaceHolderClassObj.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/AhatPlaceHolderInstance.java (renamed from tools/ahat/src/heapdump/AhatPlaceHolderInstance.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/AhatSnapshot.java (renamed from tools/ahat/src/heapdump/AhatSnapshot.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/Diff.java (renamed from tools/ahat/src/heapdump/Diff.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/DiffFields.java (renamed from tools/ahat/src/heapdump/DiffFields.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/Diffable.java (renamed from tools/ahat/src/heapdump/Diffable.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/DiffedFieldValue.java (renamed from tools/ahat/src/heapdump/DiffedFieldValue.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/DominatorReferenceIterator.java (renamed from tools/ahat/src/heapdump/DominatorReferenceIterator.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/Field.java (renamed from tools/ahat/src/heapdump/Field.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/FieldValue.java (renamed from tools/ahat/src/heapdump/FieldValue.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/HprofFormatException.java (renamed from tools/ahat/src/heapdump/HprofFormatException.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/Instances.java (renamed from tools/ahat/src/heapdump/Instances.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/Parser.java (renamed from tools/ahat/src/heapdump/Parser.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/PathElement.java (renamed from tools/ahat/src/heapdump/PathElement.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/Reference.java (renamed from tools/ahat/src/heapdump/Reference.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/RootType.java (renamed from tools/ahat/src/heapdump/RootType.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/Site.java (renamed from tools/ahat/src/heapdump/Site.java)2
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/Size.java (renamed from tools/ahat/src/heapdump/Size.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/SkipNullsIterator.java (renamed from tools/ahat/src/heapdump/SkipNullsIterator.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/Sort.java (renamed from tools/ahat/src/heapdump/Sort.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/SuperRoot.java (renamed from tools/ahat/src/heapdump/SuperRoot.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/Type.java (renamed from tools/ahat/src/heapdump/Type.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/Value.java (renamed from tools/ahat/src/heapdump/Value.java)0
-rw-r--r--tools/ahat/src/main/com/android/ahat/proguard/ProguardMap.java (renamed from tools/ahat/src/proguard/ProguardMap.java)0
-rw-r--r--tools/ahat/src/test-dump/Main.java (renamed from tools/ahat/test-dump/Main.java)0
-rw-r--r--tools/ahat/src/test/com/android/ahat/DiffFieldsTest.java (renamed from tools/ahat/test/DiffFieldsTest.java)0
-rw-r--r--tools/ahat/src/test/com/android/ahat/DiffTest.java (renamed from tools/ahat/test/DiffTest.java)0
-rw-r--r--tools/ahat/src/test/com/android/ahat/DominatorsTest.java (renamed from tools/ahat/test/DominatorsTest.java)0
-rw-r--r--tools/ahat/src/test/com/android/ahat/HtmlEscaperTest.java (renamed from tools/ahat/test/HtmlEscaperTest.java)0
-rw-r--r--tools/ahat/src/test/com/android/ahat/InstanceTest.java (renamed from tools/ahat/test/InstanceTest.java)4
-rw-r--r--tools/ahat/src/test/com/android/ahat/NativeAllocationTest.java (renamed from tools/ahat/test/NativeAllocationTest.java)0
-rw-r--r--tools/ahat/src/test/com/android/ahat/ObjectHandlerTest.java (renamed from tools/ahat/test/ObjectHandlerTest.java)0
-rw-r--r--tools/ahat/src/test/com/android/ahat/OverviewHandlerTest.java (renamed from tools/ahat/test/OverviewHandlerTest.java)0
-rw-r--r--tools/ahat/src/test/com/android/ahat/PerformanceTest.java (renamed from tools/ahat/test/PerformanceTest.java)0
-rw-r--r--tools/ahat/src/test/com/android/ahat/ProguardMapTest.java (renamed from tools/ahat/test/ProguardMapTest.java)0
-rw-r--r--tools/ahat/src/test/com/android/ahat/QueryTest.java (renamed from tools/ahat/test/QueryTest.java)0
-rw-r--r--tools/ahat/src/test/com/android/ahat/RootedHandlerTest.java (renamed from tools/ahat/test/RootedHandlerTest.java)0
-rw-r--r--tools/ahat/src/test/com/android/ahat/SiteHandlerTest.java (renamed from tools/ahat/test/SiteHandlerTest.java)0
-rw-r--r--tools/ahat/src/test/com/android/ahat/SiteTest.java (renamed from tools/ahat/test/SiteTest.java)0
-rw-r--r--tools/ahat/src/test/com/android/ahat/TestDump.java (renamed from tools/ahat/test/TestDump.java)0
-rw-r--r--tools/ahat/src/test/com/android/ahat/TestHandler.java (renamed from tools/ahat/test/TestHandler.java)0
-rw-r--r--tools/ahat/src/test/com/android/ahat/Tests.java (renamed from tools/ahat/test/Tests.java)0
-rw-r--r--tools/ahat/test-dump/README.txt7
-rw-r--r--tools/art24
-rw-r--r--tools/libjdwp_art_failures.txt29
84 files changed, 140 insertions, 47 deletions
diff --git a/tools/ahat/Android.mk b/tools/ahat/Android.mk
index cf31e2e5bd..5eccba1327 100644
--- a/tools/ahat/Android.mk
+++ b/tools/ahat/Android.mk
@@ -20,9 +20,9 @@ include art/build/Android.common_path.mk
# --- ahat.jar ----------------
include $(CLEAR_VARS)
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_JAR_MANIFEST := src/manifest.txt
-LOCAL_JAVA_RESOURCE_FILES := $(LOCAL_PATH)/src/style.css
+LOCAL_SRC_FILES := $(call all-java-files-under, src/main)
+LOCAL_JAR_MANIFEST := etc/ahat.mf
+LOCAL_JAVA_RESOURCE_FILES := $(LOCAL_PATH)/etc/style.css
LOCAL_IS_HOST_MODULE := true
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := ahat
@@ -49,9 +49,9 @@ ifneq ($(EMMA_INSTRUMENT),true)
include $(CLEAR_VARS)
LOCAL_MODULE := ahat-test-dump
LOCAL_MODULE_TAGS := tests
-LOCAL_SRC_FILES := $(call all-java-files-under, test-dump)
+LOCAL_SRC_FILES := $(call all-java-files-under, src/test-dump)
LOCAL_PROGUARD_ENABLED := obfuscation
-LOCAL_PROGUARD_FLAG_FILES := test-dump/config.pro
+LOCAL_PROGUARD_FLAG_FILES := etc/test-dump.pro
include $(BUILD_JAVA_LIBRARY)
# Determine the location of the test-dump.jar, test-dump.hprof, and proguard
@@ -87,15 +87,15 @@ $(AHAT_TEST_DUMP_BASE_HPROF): $(AHAT_TEST_DUMP_JAR) $(AHAT_TEST_DUMP_DEPENDENCIE
# --- ahat-tests.jar --------------
include $(CLEAR_VARS)
-LOCAL_SRC_FILES := $(call all-java-files-under, test)
-LOCAL_JAR_MANIFEST := test/manifest.txt
+LOCAL_SRC_FILES := $(call all-java-files-under, src/test)
+LOCAL_JAR_MANIFEST := etc/ahat-tests.mf
LOCAL_JAVA_RESOURCE_FILES := \
$(AHAT_TEST_DUMP_HPROF) \
$(AHAT_TEST_DUMP_BASE_HPROF) \
$(AHAT_TEST_DUMP_PROGUARD_MAP) \
- $(LOCAL_PATH)/test-dump/L.hprof \
- $(LOCAL_PATH)/test-dump/O.hprof \
- $(LOCAL_PATH)/test-dump/RI.hprof
+ $(LOCAL_PATH)/etc/L.hprof \
+ $(LOCAL_PATH)/etc/O.hprof \
+ $(LOCAL_PATH)/etc/RI.hprof
LOCAL_STATIC_JAVA_LIBRARIES := ahat junit-host
LOCAL_IS_HOST_MODULE := true
LOCAL_MODULE_TAGS := tests
diff --git a/tools/ahat/test-dump/L.hprof b/tools/ahat/etc/L.hprof
index 1acdf7965d..1acdf7965d 100644
--- a/tools/ahat/test-dump/L.hprof
+++ b/tools/ahat/etc/L.hprof
Binary files differ
diff --git a/tools/ahat/test-dump/O.hprof b/tools/ahat/etc/O.hprof
index d474c6c6b4..d474c6c6b4 100644
--- a/tools/ahat/test-dump/O.hprof
+++ b/tools/ahat/etc/O.hprof
Binary files differ
diff --git a/tools/ahat/etc/README.txt b/tools/ahat/etc/README.txt
new file mode 100644
index 0000000000..e9b5b22dae
--- /dev/null
+++ b/tools/ahat/etc/README.txt
@@ -0,0 +1,9 @@
+L.hprof
+ A version of the test-dump hprof generated on Android L, with one of the
+ ROOT_DEBUGGER records manually changed to a ROOT_FINALIZING record.
+
+O.hprof
+ A version of the test-dump hprof generated on Android O.
+
+RI.hprof
+ A version of the test-dump hprof generated on the reference implementation.
diff --git a/tools/ahat/test-dump/RI.hprof b/tools/ahat/etc/RI.hprof
index 9482542a7f..9482542a7f 100644
--- a/tools/ahat/test-dump/RI.hprof
+++ b/tools/ahat/etc/RI.hprof
Binary files differ
diff --git a/tools/ahat/test/manifest.txt b/tools/ahat/etc/ahat-tests.mf
index af17fadded..af17fadded 100644
--- a/tools/ahat/test/manifest.txt
+++ b/tools/ahat/etc/ahat-tests.mf
diff --git a/tools/ahat/src/manifest.txt b/tools/ahat/etc/ahat.mf
index 1753406e6e..1753406e6e 100644
--- a/tools/ahat/src/manifest.txt
+++ b/tools/ahat/etc/ahat.mf
diff --git a/tools/ahat/src/style.css b/tools/ahat/etc/style.css
index 47fae1d551..47fae1d551 100644
--- a/tools/ahat/src/style.css
+++ b/tools/ahat/etc/style.css
diff --git a/tools/ahat/test-dump/config.pro b/tools/ahat/etc/test-dump.pro
index 284e4b8621..284e4b8621 100644
--- a/tools/ahat/test-dump/config.pro
+++ b/tools/ahat/etc/test-dump.pro
diff --git a/tools/ahat/src/AhatHandler.java b/tools/ahat/src/main/com/android/ahat/AhatHandler.java
index d4b4d1b107..d4b4d1b107 100644
--- a/tools/ahat/src/AhatHandler.java
+++ b/tools/ahat/src/main/com/android/ahat/AhatHandler.java
diff --git a/tools/ahat/src/AhatHttpHandler.java b/tools/ahat/src/main/com/android/ahat/AhatHttpHandler.java
index 1d05a66653..1d05a66653 100644
--- a/tools/ahat/src/AhatHttpHandler.java
+++ b/tools/ahat/src/main/com/android/ahat/AhatHttpHandler.java
diff --git a/tools/ahat/src/BitmapHandler.java b/tools/ahat/src/main/com/android/ahat/BitmapHandler.java
index 836aef67b8..836aef67b8 100644
--- a/tools/ahat/src/BitmapHandler.java
+++ b/tools/ahat/src/main/com/android/ahat/BitmapHandler.java
diff --git a/tools/ahat/src/Column.java b/tools/ahat/src/main/com/android/ahat/Column.java
index 819e586ef9..819e586ef9 100644
--- a/tools/ahat/src/Column.java
+++ b/tools/ahat/src/main/com/android/ahat/Column.java
diff --git a/tools/ahat/src/Doc.java b/tools/ahat/src/main/com/android/ahat/Doc.java
index 5a70c4c74b..5a70c4c74b 100644
--- a/tools/ahat/src/Doc.java
+++ b/tools/ahat/src/main/com/android/ahat/Doc.java
diff --git a/tools/ahat/src/DocString.java b/tools/ahat/src/main/com/android/ahat/DocString.java
index 76e9e80d46..76e9e80d46 100644
--- a/tools/ahat/src/DocString.java
+++ b/tools/ahat/src/main/com/android/ahat/DocString.java
diff --git a/tools/ahat/src/DominatedList.java b/tools/ahat/src/main/com/android/ahat/DominatedList.java
index 75133b2184..75133b2184 100644
--- a/tools/ahat/src/DominatedList.java
+++ b/tools/ahat/src/main/com/android/ahat/DominatedList.java
diff --git a/tools/ahat/src/HeapTable.java b/tools/ahat/src/main/com/android/ahat/HeapTable.java
index b04f2aebf7..b04f2aebf7 100644
--- a/tools/ahat/src/HeapTable.java
+++ b/tools/ahat/src/main/com/android/ahat/HeapTable.java
diff --git a/tools/ahat/src/HtmlDoc.java b/tools/ahat/src/main/com/android/ahat/HtmlDoc.java
index 5a22fc75fe..5a22fc75fe 100644
--- a/tools/ahat/src/HtmlDoc.java
+++ b/tools/ahat/src/main/com/android/ahat/HtmlDoc.java
diff --git a/tools/ahat/src/HtmlEscaper.java b/tools/ahat/src/main/com/android/ahat/HtmlEscaper.java
index 75a68277d3..75a68277d3 100644
--- a/tools/ahat/src/HtmlEscaper.java
+++ b/tools/ahat/src/main/com/android/ahat/HtmlEscaper.java
diff --git a/tools/ahat/src/Main.java b/tools/ahat/src/main/com/android/ahat/Main.java
index 31c485d851..31c485d851 100644
--- a/tools/ahat/src/Main.java
+++ b/tools/ahat/src/main/com/android/ahat/Main.java
diff --git a/tools/ahat/src/Menu.java b/tools/ahat/src/main/com/android/ahat/Menu.java
index 6d38dc5731..6d38dc5731 100644
--- a/tools/ahat/src/Menu.java
+++ b/tools/ahat/src/main/com/android/ahat/Menu.java
diff --git a/tools/ahat/src/ObjectHandler.java b/tools/ahat/src/main/com/android/ahat/ObjectHandler.java
index 79f8b76c92..bfd5d5cacd 100644
--- a/tools/ahat/src/ObjectHandler.java
+++ b/tools/ahat/src/main/com/android/ahat/ObjectHandler.java
@@ -19,6 +19,7 @@ package com.android.ahat;
import com.android.ahat.heapdump.AhatArrayInstance;
import com.android.ahat.heapdump.AhatClassInstance;
import com.android.ahat.heapdump.AhatClassObj;
+import com.android.ahat.heapdump.AhatHeap;
import com.android.ahat.heapdump.AhatInstance;
import com.android.ahat.heapdump.AhatSnapshot;
import com.android.ahat.heapdump.DiffFields;
@@ -66,7 +67,10 @@ class ObjectHandler implements AhatHandler {
doc.big(Summarizer.summarize(inst));
printAllocationSite(doc, query, inst);
- printGcRootPath(doc, query, inst);
+
+ if (!inst.isUnreachable()) {
+ printGcRootPath(doc, query, inst);
+ }
doc.section("Object Info");
AhatClassObj cls = inst.getClassObj();
@@ -257,23 +261,54 @@ class ObjectHandler implements AhatHandler {
if (bitmap != null) {
doc.section("Bitmap Image");
doc.println(DocString.image(
- DocString.formattedUri("bitmap?id=%d", bitmap.getId()), "bitmap image"));
+ DocString.formattedUri("bitmap?id=0x%x", bitmap.getId()), "bitmap image"));
}
}
private void printGcRootPath(Doc doc, Query query, AhatInstance inst) {
doc.section("Sample Path from GC Root");
List<PathElement> path = inst.getPathFromGcRoot();
- doc.table(new Column(""), new Column("Path Element"));
- doc.row(DocString.text("(rooted)"),
- DocString.link(DocString.uri("root"), DocString.text("ROOT")));
- for (PathElement element : path) {
- DocString label = DocString.text("→ ");
- label.append(Summarizer.summarize(element.instance));
- label.append(element.field);
- doc.row(DocString.text(element.isDominator ? "(dominator)" : ""), label);
+
+ // Add a dummy PathElement as a marker for the root.
+ final PathElement root = new PathElement(null, null);
+ path.add(0, root);
+
+ HeapTable.TableConfig<PathElement> table = new HeapTable.TableConfig<PathElement>() {
+ public String getHeapsDescription() {
+ return "Bytes Retained by Heap (Dominators Only)";
+ }
+
+ public long getSize(PathElement element, AhatHeap heap) {
+ if (element == root) {
+ return heap.getSize().getSize();
+ }
+ if (element.isDominator) {
+ return element.instance.getRetainedSize(heap).getSize();
+ }
+ return 0;
+ }
+
+ public List<HeapTable.ValueConfig<PathElement>> getValueConfigs() {
+ HeapTable.ValueConfig<PathElement> value = new HeapTable.ValueConfig<PathElement>() {
+ public String getDescription() {
+ return "Path Element";
+ }
+
+ public DocString render(PathElement element) {
+ if (element == root) {
+ return DocString.link(DocString.uri("rooted"), DocString.text("ROOT"));
+ } else {
+ DocString label = DocString.text("→ ");
+ label.append(Summarizer.summarize(element.instance));
+ label.append(element.field);
+ return label;
+ }
+ }
+ };
+ return Collections.singletonList(value);
+ }
};
- doc.end();
+ HeapTable.render(doc, query, DOMINATOR_PATH_ID, table, mSnapshot, path);
}
public void printDominatedObjects(Doc doc, Query query, AhatInstance inst) {
diff --git a/tools/ahat/src/ObjectsHandler.java b/tools/ahat/src/main/com/android/ahat/ObjectsHandler.java
index 1a8f018bd5..1a8f018bd5 100644
--- a/tools/ahat/src/ObjectsHandler.java
+++ b/tools/ahat/src/main/com/android/ahat/ObjectsHandler.java
diff --git a/tools/ahat/src/OverviewHandler.java b/tools/ahat/src/main/com/android/ahat/OverviewHandler.java
index c9f84259a9..c9f84259a9 100644
--- a/tools/ahat/src/OverviewHandler.java
+++ b/tools/ahat/src/main/com/android/ahat/OverviewHandler.java
diff --git a/tools/ahat/src/Query.java b/tools/ahat/src/main/com/android/ahat/Query.java
index f910608771..9c2783c081 100644
--- a/tools/ahat/src/Query.java
+++ b/tools/ahat/src/main/com/android/ahat/Query.java
@@ -65,7 +65,7 @@ class Query {
*/
public long getLong(String name, long defaultValue) {
String value = get(name, null);
- return value == null ? defaultValue : Long.parseLong(value);
+ return value == null ? defaultValue : Long.decode(value);
}
/**
@@ -73,7 +73,7 @@ class Query {
*/
public int getInt(String name, int defaultValue) {
String value = get(name, null);
- return value == null ? defaultValue : Integer.parseInt(value);
+ return value == null ? defaultValue : Integer.decode(value);
}
/**
diff --git a/tools/ahat/src/RootedHandler.java b/tools/ahat/src/main/com/android/ahat/RootedHandler.java
index 26451a3963..26451a3963 100644
--- a/tools/ahat/src/RootedHandler.java
+++ b/tools/ahat/src/main/com/android/ahat/RootedHandler.java
diff --git a/tools/ahat/src/SiteHandler.java b/tools/ahat/src/main/com/android/ahat/SiteHandler.java
index 543eaa376a..543eaa376a 100644
--- a/tools/ahat/src/SiteHandler.java
+++ b/tools/ahat/src/main/com/android/ahat/SiteHandler.java
diff --git a/tools/ahat/src/SitePrinter.java b/tools/ahat/src/main/com/android/ahat/SitePrinter.java
index 32037f4414..32037f4414 100644
--- a/tools/ahat/src/SitePrinter.java
+++ b/tools/ahat/src/main/com/android/ahat/SitePrinter.java
diff --git a/tools/ahat/src/SizeTable.java b/tools/ahat/src/main/com/android/ahat/SizeTable.java
index 46e395669f..46e395669f 100644
--- a/tools/ahat/src/SizeTable.java
+++ b/tools/ahat/src/main/com/android/ahat/SizeTable.java
diff --git a/tools/ahat/src/StaticHandler.java b/tools/ahat/src/main/com/android/ahat/StaticHandler.java
index 4a68f1c12f..4a68f1c12f 100644
--- a/tools/ahat/src/StaticHandler.java
+++ b/tools/ahat/src/main/com/android/ahat/StaticHandler.java
diff --git a/tools/ahat/src/SubsetSelector.java b/tools/ahat/src/main/com/android/ahat/SubsetSelector.java
index 79399c178b..79399c178b 100644
--- a/tools/ahat/src/SubsetSelector.java
+++ b/tools/ahat/src/main/com/android/ahat/SubsetSelector.java
diff --git a/tools/ahat/src/Summarizer.java b/tools/ahat/src/main/com/android/ahat/Summarizer.java
index 50b2e4b3b3..ae0776ab0b 100644
--- a/tools/ahat/src/Summarizer.java
+++ b/tools/ahat/src/main/com/android/ahat/Summarizer.java
@@ -51,7 +51,9 @@ class Summarizer {
}
// Annotate unreachable objects as such.
- if (!inst.isReachable()) {
+ if (inst.isWeaklyReachable()) {
+ formatted.append("weak ");
+ } else if (inst.isUnreachable()) {
formatted.append("unreachable ");
}
@@ -65,7 +67,7 @@ class Summarizer {
// Don't make links to placeholder objects.
formatted.append(linkText);
} else {
- URI objTarget = DocString.formattedUri("object?id=%d", inst.getId());
+ URI objTarget = DocString.formattedUri("object?id=0x%x", inst.getId());
formatted.appendLink(objTarget, linkText);
}
@@ -100,7 +102,7 @@ class Summarizer {
AhatInstance bitmap = inst.getAssociatedBitmapInstance();
String thumbnail = "";
if (bitmap != null) {
- URI uri = DocString.formattedUri("bitmap?id=%d", bitmap.getId());
+ URI uri = DocString.formattedUri("bitmap?id=0x%x", bitmap.getId());
formatted.appendThumbnail(uri, "bitmap image");
}
return formatted;
diff --git a/tools/ahat/src/dominators/DominatorsComputation.java b/tools/ahat/src/main/com/android/ahat/dominators/DominatorsComputation.java
index 58b7b59f9a..58b7b59f9a 100644
--- a/tools/ahat/src/dominators/DominatorsComputation.java
+++ b/tools/ahat/src/main/com/android/ahat/dominators/DominatorsComputation.java
diff --git a/tools/ahat/src/heapdump/AhatArrayInstance.java b/tools/ahat/src/main/com/android/ahat/heapdump/AhatArrayInstance.java
index 50a4805bed..50a4805bed 100644
--- a/tools/ahat/src/heapdump/AhatArrayInstance.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/AhatArrayInstance.java
diff --git a/tools/ahat/src/heapdump/AhatClassInstance.java b/tools/ahat/src/main/com/android/ahat/heapdump/AhatClassInstance.java
index 94efa5049f..94efa5049f 100644
--- a/tools/ahat/src/heapdump/AhatClassInstance.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/AhatClassInstance.java
diff --git a/tools/ahat/src/heapdump/AhatClassObj.java b/tools/ahat/src/main/com/android/ahat/heapdump/AhatClassObj.java
index be0f71306e..be0f71306e 100644
--- a/tools/ahat/src/heapdump/AhatClassObj.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/AhatClassObj.java
diff --git a/tools/ahat/src/heapdump/AhatField.java b/tools/ahat/src/main/com/android/ahat/heapdump/AhatField.java
index a25ee2869d..a25ee2869d 100644
--- a/tools/ahat/src/heapdump/AhatField.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/AhatField.java
diff --git a/tools/ahat/src/heapdump/AhatHeap.java b/tools/ahat/src/main/com/android/ahat/heapdump/AhatHeap.java
index b8897a182c..b8897a182c 100644
--- a/tools/ahat/src/heapdump/AhatHeap.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/AhatHeap.java
diff --git a/tools/ahat/src/heapdump/AhatInstance.java b/tools/ahat/src/main/com/android/ahat/heapdump/AhatInstance.java
index c04448728f..cb2d738f23 100644
--- a/tools/ahat/src/heapdump/AhatInstance.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/AhatInstance.java
@@ -136,13 +136,28 @@ public abstract class AhatInstance implements Diffable<AhatInstance>,
}
/**
- * Returns whether this object is strongly-reachable.
+ * Returns true if this object is strongly-reachable.
*/
- public boolean isReachable() {
+ public boolean isStronglyReachable() {
return mImmediateDominator != null;
}
/**
+ * Returns true if this object is reachable only through a
+ * soft/weak/phantom/finalizer reference.
+ */
+ public boolean isWeaklyReachable() {
+ return !isStronglyReachable() && mNextInstanceToGcRoot != null;
+ }
+
+ /**
+ * Returns true if this object is completely unreachable.
+ */
+ public boolean isUnreachable() {
+ return !isStronglyReachable() && !isWeaklyReachable();
+ }
+
+ /**
* Returns the heap that this instance is allocated on.
*/
public AhatHeap getHeap() {
@@ -499,6 +514,10 @@ public abstract class AhatInstance implements Diffable<AhatInstance>,
} else {
if (ref.ref.mSoftReverseReferences == null) {
ref.ref.mSoftReverseReferences = new ArrayList<AhatInstance>();
+ if (ref.ref.mNextInstanceToGcRoot == null) {
+ ref.ref.mNextInstanceToGcRoot = ref.src;
+ ref.ref.mNextInstanceToGcRootField = ref.field;
+ }
}
ref.ref.mSoftReverseReferences.add(ref.src);
}
diff --git a/tools/ahat/src/heapdump/AhatPlaceHolderClassObj.java b/tools/ahat/src/main/com/android/ahat/heapdump/AhatPlaceHolderClassObj.java
index 07f5b50012..07f5b50012 100644
--- a/tools/ahat/src/heapdump/AhatPlaceHolderClassObj.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/AhatPlaceHolderClassObj.java
diff --git a/tools/ahat/src/heapdump/AhatPlaceHolderInstance.java b/tools/ahat/src/main/com/android/ahat/heapdump/AhatPlaceHolderInstance.java
index 884940370d..884940370d 100644
--- a/tools/ahat/src/heapdump/AhatPlaceHolderInstance.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/AhatPlaceHolderInstance.java
diff --git a/tools/ahat/src/heapdump/AhatSnapshot.java b/tools/ahat/src/main/com/android/ahat/heapdump/AhatSnapshot.java
index 945966cec7..945966cec7 100644
--- a/tools/ahat/src/heapdump/AhatSnapshot.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/AhatSnapshot.java
diff --git a/tools/ahat/src/heapdump/Diff.java b/tools/ahat/src/main/com/android/ahat/heapdump/Diff.java
index 98c7e58d56..98c7e58d56 100644
--- a/tools/ahat/src/heapdump/Diff.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/Diff.java
diff --git a/tools/ahat/src/heapdump/DiffFields.java b/tools/ahat/src/main/com/android/ahat/heapdump/DiffFields.java
index e3c671fe21..e3c671fe21 100644
--- a/tools/ahat/src/heapdump/DiffFields.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/DiffFields.java
diff --git a/tools/ahat/src/heapdump/Diffable.java b/tools/ahat/src/main/com/android/ahat/heapdump/Diffable.java
index 53442c857e..53442c857e 100644
--- a/tools/ahat/src/heapdump/Diffable.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/Diffable.java
diff --git a/tools/ahat/src/heapdump/DiffedFieldValue.java b/tools/ahat/src/main/com/android/ahat/heapdump/DiffedFieldValue.java
index 3cd273ed98..3cd273ed98 100644
--- a/tools/ahat/src/heapdump/DiffedFieldValue.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/DiffedFieldValue.java
diff --git a/tools/ahat/src/heapdump/DominatorReferenceIterator.java b/tools/ahat/src/main/com/android/ahat/heapdump/DominatorReferenceIterator.java
index 0b99e496cc..0b99e496cc 100644
--- a/tools/ahat/src/heapdump/DominatorReferenceIterator.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/DominatorReferenceIterator.java
diff --git a/tools/ahat/src/heapdump/Field.java b/tools/ahat/src/main/com/android/ahat/heapdump/Field.java
index dff401796a..dff401796a 100644
--- a/tools/ahat/src/heapdump/Field.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/Field.java
diff --git a/tools/ahat/src/heapdump/FieldValue.java b/tools/ahat/src/main/com/android/ahat/heapdump/FieldValue.java
index 20e6da7271..20e6da7271 100644
--- a/tools/ahat/src/heapdump/FieldValue.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/FieldValue.java
diff --git a/tools/ahat/src/heapdump/HprofFormatException.java b/tools/ahat/src/main/com/android/ahat/heapdump/HprofFormatException.java
index 0e128cd50a..0e128cd50a 100644
--- a/tools/ahat/src/heapdump/HprofFormatException.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/HprofFormatException.java
diff --git a/tools/ahat/src/heapdump/Instances.java b/tools/ahat/src/main/com/android/ahat/heapdump/Instances.java
index 085144650f..085144650f 100644
--- a/tools/ahat/src/heapdump/Instances.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/Instances.java
diff --git a/tools/ahat/src/heapdump/Parser.java b/tools/ahat/src/main/com/android/ahat/heapdump/Parser.java
index 756b7d2554..756b7d2554 100644
--- a/tools/ahat/src/heapdump/Parser.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/Parser.java
diff --git a/tools/ahat/src/heapdump/PathElement.java b/tools/ahat/src/main/com/android/ahat/heapdump/PathElement.java
index 196a24628c..196a24628c 100644
--- a/tools/ahat/src/heapdump/PathElement.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/PathElement.java
diff --git a/tools/ahat/src/heapdump/Reference.java b/tools/ahat/src/main/com/android/ahat/heapdump/Reference.java
index 980f2780b6..980f2780b6 100644
--- a/tools/ahat/src/heapdump/Reference.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/Reference.java
diff --git a/tools/ahat/src/heapdump/RootType.java b/tools/ahat/src/main/com/android/ahat/heapdump/RootType.java
index af552ea2c9..af552ea2c9 100644
--- a/tools/ahat/src/heapdump/RootType.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/RootType.java
diff --git a/tools/ahat/src/heapdump/Site.java b/tools/ahat/src/main/com/android/ahat/heapdump/Site.java
index 821493f1be..523550ad2c 100644
--- a/tools/ahat/src/heapdump/Site.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/Site.java
@@ -186,7 +186,7 @@ public class Site implements Diffable<Site> {
// Add all reachable objects allocated at this site.
for (AhatInstance inst : mObjects) {
- if (inst.isReachable()) {
+ if (inst.isStronglyReachable()) {
AhatHeap heap = inst.getHeap();
Size size = inst.getSize();
ObjectsInfo info = getObjectsInfo(heap, inst.getClassObj());
diff --git a/tools/ahat/src/heapdump/Size.java b/tools/ahat/src/main/com/android/ahat/heapdump/Size.java
index 7c8db900df..7c8db900df 100644
--- a/tools/ahat/src/heapdump/Size.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/Size.java
diff --git a/tools/ahat/src/heapdump/SkipNullsIterator.java b/tools/ahat/src/main/com/android/ahat/heapdump/SkipNullsIterator.java
index e99fe5e8ea..e99fe5e8ea 100644
--- a/tools/ahat/src/heapdump/SkipNullsIterator.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/SkipNullsIterator.java
diff --git a/tools/ahat/src/heapdump/Sort.java b/tools/ahat/src/main/com/android/ahat/heapdump/Sort.java
index efe0d6b59b..efe0d6b59b 100644
--- a/tools/ahat/src/heapdump/Sort.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/Sort.java
diff --git a/tools/ahat/src/heapdump/SuperRoot.java b/tools/ahat/src/main/com/android/ahat/heapdump/SuperRoot.java
index a2adbd2808..a2adbd2808 100644
--- a/tools/ahat/src/heapdump/SuperRoot.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/SuperRoot.java
diff --git a/tools/ahat/src/heapdump/Type.java b/tools/ahat/src/main/com/android/ahat/heapdump/Type.java
index 726bc47cf2..726bc47cf2 100644
--- a/tools/ahat/src/heapdump/Type.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/Type.java
diff --git a/tools/ahat/src/heapdump/Value.java b/tools/ahat/src/main/com/android/ahat/heapdump/Value.java
index 01fd25057d..01fd25057d 100644
--- a/tools/ahat/src/heapdump/Value.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/Value.java
diff --git a/tools/ahat/src/proguard/ProguardMap.java b/tools/ahat/src/main/com/android/ahat/proguard/ProguardMap.java
index 50c110aad4..50c110aad4 100644
--- a/tools/ahat/src/proguard/ProguardMap.java
+++ b/tools/ahat/src/main/com/android/ahat/proguard/ProguardMap.java
diff --git a/tools/ahat/test-dump/Main.java b/tools/ahat/src/test-dump/Main.java
index 333d28c214..333d28c214 100644
--- a/tools/ahat/test-dump/Main.java
+++ b/tools/ahat/src/test-dump/Main.java
diff --git a/tools/ahat/test/DiffFieldsTest.java b/tools/ahat/src/test/com/android/ahat/DiffFieldsTest.java
index 19399757a6..19399757a6 100644
--- a/tools/ahat/test/DiffFieldsTest.java
+++ b/tools/ahat/src/test/com/android/ahat/DiffFieldsTest.java
diff --git a/tools/ahat/test/DiffTest.java b/tools/ahat/src/test/com/android/ahat/DiffTest.java
index 585f29ae61..585f29ae61 100644
--- a/tools/ahat/test/DiffTest.java
+++ b/tools/ahat/src/test/com/android/ahat/DiffTest.java
diff --git a/tools/ahat/test/DominatorsTest.java b/tools/ahat/src/test/com/android/ahat/DominatorsTest.java
index 0424e10dc8..0424e10dc8 100644
--- a/tools/ahat/test/DominatorsTest.java
+++ b/tools/ahat/src/test/com/android/ahat/DominatorsTest.java
diff --git a/tools/ahat/test/HtmlEscaperTest.java b/tools/ahat/src/test/com/android/ahat/HtmlEscaperTest.java
index a36db356f5..a36db356f5 100644
--- a/tools/ahat/test/HtmlEscaperTest.java
+++ b/tools/ahat/src/test/com/android/ahat/HtmlEscaperTest.java
diff --git a/tools/ahat/test/InstanceTest.java b/tools/ahat/src/test/com/android/ahat/InstanceTest.java
index 49a21e2d70..a4908fd0ab 100644
--- a/tools/ahat/test/InstanceTest.java
+++ b/tools/ahat/src/test/com/android/ahat/InstanceTest.java
@@ -214,7 +214,9 @@ public class InstanceTest {
// reference as having a non-null referent.
TestDump dump = TestDump.getTestDump();
AhatInstance ref = dump.getDumpedAhatInstance("aSoftReference");
- assertNotNull(ref.getReferent());
+ AhatInstance referent = ref.getReferent();
+ assertNotNull(referent);
+ assertTrue(referent.isWeaklyReachable());
}
@Test
diff --git a/tools/ahat/test/NativeAllocationTest.java b/tools/ahat/src/test/com/android/ahat/NativeAllocationTest.java
index 7436be8311..7436be8311 100644
--- a/tools/ahat/test/NativeAllocationTest.java
+++ b/tools/ahat/src/test/com/android/ahat/NativeAllocationTest.java
diff --git a/tools/ahat/test/ObjectHandlerTest.java b/tools/ahat/src/test/com/android/ahat/ObjectHandlerTest.java
index 1b8a781e0c..1b8a781e0c 100644
--- a/tools/ahat/test/ObjectHandlerTest.java
+++ b/tools/ahat/src/test/com/android/ahat/ObjectHandlerTest.java
diff --git a/tools/ahat/test/OverviewHandlerTest.java b/tools/ahat/src/test/com/android/ahat/OverviewHandlerTest.java
index c2f773b64b..c2f773b64b 100644
--- a/tools/ahat/test/OverviewHandlerTest.java
+++ b/tools/ahat/src/test/com/android/ahat/OverviewHandlerTest.java
diff --git a/tools/ahat/test/PerformanceTest.java b/tools/ahat/src/test/com/android/ahat/PerformanceTest.java
index e13974bb6f..e13974bb6f 100644
--- a/tools/ahat/test/PerformanceTest.java
+++ b/tools/ahat/src/test/com/android/ahat/PerformanceTest.java
diff --git a/tools/ahat/test/ProguardMapTest.java b/tools/ahat/src/test/com/android/ahat/ProguardMapTest.java
index ad40f45665..ad40f45665 100644
--- a/tools/ahat/test/ProguardMapTest.java
+++ b/tools/ahat/src/test/com/android/ahat/ProguardMapTest.java
diff --git a/tools/ahat/test/QueryTest.java b/tools/ahat/src/test/com/android/ahat/QueryTest.java
index 5bcf8eafc3..5bcf8eafc3 100644
--- a/tools/ahat/test/QueryTest.java
+++ b/tools/ahat/src/test/com/android/ahat/QueryTest.java
diff --git a/tools/ahat/test/RootedHandlerTest.java b/tools/ahat/src/test/com/android/ahat/RootedHandlerTest.java
index f325b8e9a7..f325b8e9a7 100644
--- a/tools/ahat/test/RootedHandlerTest.java
+++ b/tools/ahat/src/test/com/android/ahat/RootedHandlerTest.java
diff --git a/tools/ahat/test/SiteHandlerTest.java b/tools/ahat/src/test/com/android/ahat/SiteHandlerTest.java
index 37596be8bb..37596be8bb 100644
--- a/tools/ahat/test/SiteHandlerTest.java
+++ b/tools/ahat/src/test/com/android/ahat/SiteHandlerTest.java
diff --git a/tools/ahat/test/SiteTest.java b/tools/ahat/src/test/com/android/ahat/SiteTest.java
index dc0fe08297..dc0fe08297 100644
--- a/tools/ahat/test/SiteTest.java
+++ b/tools/ahat/src/test/com/android/ahat/SiteTest.java
diff --git a/tools/ahat/test/TestDump.java b/tools/ahat/src/test/com/android/ahat/TestDump.java
index a0d1021ef1..a0d1021ef1 100644
--- a/tools/ahat/test/TestDump.java
+++ b/tools/ahat/src/test/com/android/ahat/TestDump.java
diff --git a/tools/ahat/test/TestHandler.java b/tools/ahat/src/test/com/android/ahat/TestHandler.java
index 859e39a688..859e39a688 100644
--- a/tools/ahat/test/TestHandler.java
+++ b/tools/ahat/src/test/com/android/ahat/TestHandler.java
diff --git a/tools/ahat/test/Tests.java b/tools/ahat/src/test/com/android/ahat/Tests.java
index 0e7043291d..0e7043291d 100644
--- a/tools/ahat/test/Tests.java
+++ b/tools/ahat/src/test/com/android/ahat/Tests.java
diff --git a/tools/ahat/test-dump/README.txt b/tools/ahat/test-dump/README.txt
deleted file mode 100644
index e7ea584b26..0000000000
--- a/tools/ahat/test-dump/README.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-
-Main.java - A program used to generate a heap dump used for tests.
-L.hprof - A version of the test dump generated on Android L,
- with one of the ROOT_DEBUGGER records manually changed to a
- ROOT_FINALIZING record.
-O.hprof - A version of the test dump generated on Android O.
-RI.hprof - A version of the test dump generated on the reference implementation.
diff --git a/tools/art b/tools/art
index 15993ddaa2..80a80908e4 100644
--- a/tools/art
+++ b/tools/art
@@ -220,6 +220,11 @@ function detect_boot_image_location() {
echo "$image_location"
}
+# If android logging is not explicitly set, only print warnings and errors.
+if [ -z "$ANDROID_LOG_TAGS" ]; then
+ ANDROID_LOG_TAGS='*:w'
+fi
+
# Runs dalvikvm, returns its exit code.
# (Oat directories are cleaned up in between runs)
function run_art() {
@@ -229,15 +234,16 @@ function run_art() {
# First cleanup any left-over 'oat' files from the last time dalvikvm was run.
cleanup_oat_directory_for_classpath "$@"
# Run dalvikvm.
- verbose_run ANDROID_DATA=$ANDROID_DATA \
- ANDROID_ROOT=$ANDROID_ROOT \
- LD_LIBRARY_PATH=$LD_LIBRARY_PATH \
- PATH=$ANDROID_ROOT/bin:$PATH \
- LD_USE_LOAD_BIAS=1 \
- $LAUNCH_WRAPPER $ART_BINARY_PATH $lib \
- -XXlib:$LIBART \
- -Xnorelocate \
- -Ximage:"$image_location" \
+ verbose_run ANDROID_DATA="$ANDROID_DATA" \
+ ANDROID_ROOT="$ANDROID_ROOT" \
+ LD_LIBRARY_PATH="$LD_LIBRARY_PATH" \
+ PATH="$ANDROID_ROOT/bin:$PATH" \
+ LD_USE_LOAD_BIAS=1 \
+ ANDROID_LOG_TAGS="$ANDROID_LOG_TAGS" \
+ $LAUNCH_WRAPPER $ART_BINARY_PATH $lib \
+ -XXlib:"$LIBART" \
+ -Xnorelocate \
+ -Ximage:"$image_location" \
"$@"
ret=$?
diff --git a/tools/libjdwp_art_failures.txt b/tools/libjdwp_art_failures.txt
index 6b5daec5a7..8d67c45cce 100644
--- a/tools/libjdwp_art_failures.txt
+++ b/tools/libjdwp_art_failures.txt
@@ -48,7 +48,7 @@
name: "org.apache.harmony.jpda.tests.jdwp.Events.VMDeath002Test#testVMDeathRequest"
},
{
- description: "Test fails with INTERNAL error due to proxy frame!",
+ description: "Test fails with OPAQUE_FRAME error due to attempting a GetLocalReference on a proxy frame instead of GetLocalInstance!",
result: EXEC_FAILED,
bug: 66903662,
name: "org.apache.harmony.jpda.tests.jdwp.StackFrame.ProxyThisObjectTest#testThisObject"
@@ -71,6 +71,33 @@
"org.apache.harmony.jpda.tests.jdwp.EventModifiers.InstanceOnlyModifierTest#testMethodExit",
"org.apache.harmony.jpda.tests.jdwp.EventModifiers.InstanceOnlyModifierTest#testMethodExitWithReturnValue" ]
},
+/* TODO Investigate these failures more closely */
+{
+ description: "Tests that fail when run on the chromium buildbots against the prebuilt libjdwp.so in certain configurations",
+ result: EXEC_FAILED,
+ bug: 67497270,
+ names: [
+ "org.apache.harmony.jpda.tests.jdwp.Events.CombinedEvents003Test#testCombinedEvents003_01",
+ "org.apache.harmony.jpda.tests.jdwp.Events.CombinedEventsTest#testCombinedEvents_01",
+ "org.apache.harmony.jpda.tests.jdwp.Events.CombinedEventsTest#testCombinedEvents_02",
+ "org.apache.harmony.jpda.tests.jdwp.Events.CombinedEventsTest#testCombinedEvents_03",
+ "org.apache.harmony.jpda.tests.jdwp.Events.CombinedEventsTest#testCombinedEvents_04",
+ "org.apache.harmony.jpda.tests.jdwp.Events.CombinedEventsTest#testCombinedEvents_06",
+ "org.apache.harmony.jpda.tests.jdwp.Events.VMDeathTest#testVMDeathEvent",
+ "org.apache.harmony.jpda.tests.jdwp.MultiSession.ClassPrepareTest#testClassPrepare001",
+ "org.apache.harmony.jpda.tests.jdwp.MultiSession.ExceptionTest#testException001",
+ "org.apache.harmony.jpda.tests.jdwp.MultiSession.FieldAccessTest#testFieldAccess001",
+ "org.apache.harmony.jpda.tests.jdwp.MultiSession.FieldModificationTest#testFieldModification001",
+ "org.apache.harmony.jpda.tests.jdwp.MultiSession.SingleStepTest#testSingleStep001",
+ "org.apache.harmony.jpda.tests.jdwp.MultiSession.VMDeathTest#testVMDeathRequest",
+ "org.apache.harmony.jpda.tests.jdwp.ReferenceType.SignatureWithGenericTest#testSignatureWithGeneric001",
+ "org.apache.harmony.jpda.tests.jdwp.StackFrame.GetValues002Test#testGetValues005_Int2",
+ "org.apache.harmony.jpda.tests.jdwp.VirtualMachine.SetDefaultStratumTest#testSetDefaultStratum001",
+ "org.apache.harmony.jpda.tests.jdwp.ThreadReference.StatusTest#testStatus001",
+ "org.apache.harmony.jpda.tests.jdwp.VirtualMachine.AllClassesTest#testAllClasses002",
+ "org.apache.harmony.jpda.tests.jdwp.VirtualMachine.AllClassesWithGenericTest#testAllClassesWithGeneric001"
+ ]
+},
/* TODO Categorize these failures more. */
{
description: "Tests that fail on both ART and RI. These tests are likely incorrect",