diff options
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/ahat/Android.mk | 20 | ||||
| -rw-r--r-- | tools/ahat/etc/L.hprof (renamed from tools/ahat/test-dump/L.hprof) | bin | 11930828 -> 11930828 bytes | |||
| -rw-r--r-- | tools/ahat/etc/O.hprof (renamed from tools/ahat/test-dump/O.hprof) | bin | 5921872 -> 5921872 bytes | |||
| -rw-r--r-- | tools/ahat/etc/README.txt | 9 | ||||
| -rw-r--r-- | tools/ahat/etc/RI.hprof (renamed from tools/ahat/test-dump/RI.hprof) | bin | 1819716 -> 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.txt | 7 | ||||
| -rw-r--r-- | tools/art | 24 | ||||
| -rw-r--r-- | tools/libjdwp_art_failures.txt | 29 |
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 Binary files differindex 1acdf7965d..1acdf7965d 100644 --- a/tools/ahat/test-dump/L.hprof +++ b/tools/ahat/etc/L.hprof diff --git a/tools/ahat/test-dump/O.hprof b/tools/ahat/etc/O.hprof Binary files differindex d474c6c6b4..d474c6c6b4 100644 --- a/tools/ahat/test-dump/O.hprof +++ b/tools/ahat/etc/O.hprof 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 Binary files differindex 9482542a7f..9482542a7f 100644 --- a/tools/ahat/test-dump/RI.hprof +++ b/tools/ahat/etc/RI.hprof 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. @@ -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", |