History log of /art/tools/ahat/Android.mk
Revision Date Author Comments
096d3ae1005acf8f56474bd780ce82d675348e61 26-Jan-2018 Andreas Gampe <agampe@google.com> Ahat: Use art -d in tests

Use the debug dependencies and art -d for heap-dump generation.
The heap dump already depends on the core images, which are
generated with dex2oatd. This cuts down on the required
targets when building ahat-tests.

Bug: 72549306
Test: m ahat-tests
Test: m test-art-host
Change-Id: I76d99b41d4d31b99a68f6085940ac0885c756905
b7732a3fcf06a55075a601dbc593b23a6fc71dbf 16-Nov-2017 Richard Uhler <ruhler@google.com> Add javadoc for all public ahat API.

And tighten up the API a little more.

The only functional change is to replace the Sort.WithPriority class
with a Sort.withPriority function so that the Sort.WithPriority class
can be made private.

Test: m ahat-test
Change-Id: Iba0ac04767a20c9008f209a777294ecaccc64ffc
0a85a95210b3874722a3b36b57fb12307b4b635d 30-Oct-2017 Richard Uhler <ruhler@google.com> Tighten up ahat public API.

And add build rules to make it very explict when the public API changes.

Change-Id: I2319eb2004e87957c5d040d32a109ca09a06a166
Test: m ahat-test
Test: Change public API and verify build complains.
Test: Change non-public API and verify build does not complain.
0b805e737392cbbbda1aa2934d830e33a16c12ea 31-Oct-2017 Pete Gillin <peteg@google.com> Include ahat in the general-tests tradefed suite.

Specifically, this makes ahat available on the classpath of the
general-tests tradefed suite. It will be used by libcore tests that
run there.

Change-Id: If3fa3a78c6b9c4ce4df22305bcd8d731b9466671
Bug: 67283029
Bug: 67999970
Test: make ahat tradefed-all
8674b917d7085c5fe64836251e154a58b57e976e 23-Oct-2017 Colin Cross <ccross@android.com> Depend on dalvikvm64 directly instead of using ART_HOST_EXECUTABLES

ART_HOST_EXECUTABLES is a list of phony targets. A file that depends
on a phony target is always considered dirty and is rebuilt on every
build. Make the test-dump*.hprof targets depend on the installed
location of dalvikvm64, and pass --64 to the art script so that it
calls dalvikvm64 instead of the dalvikvm symlink.

Bug: 68105950
Test: m out/target/common/obj/JAVA_LIBRARIES/ahat-test-dump_intermediates/test-dump-base.hprof
Change-Id: Ibf2dae4bc6113b53db6ebadc93a67eceb55fd77b
bf47bc5171880a37be4de334743e4d82fc68b20f 22-Oct-2017 Colin Cross <ccross@android.com> ahat-tests: don't write to src directory during build

The art script writes to $PWD/android-data$$ by default, which is
in the source tree and may not be writeable. It also causes the
timestamp of the top level source dir to change, which can cause
build globs to rerun on the next build and breaks unnecessary
rebuild checks.

Test: m checkbuild
Bug: 68105950
Change-Id: I75ddb6519b1c94132635517a6b65ea24cad25d91
8cc213436f3d15a44fb86eda04e16e24923a8f4c 10-Oct-2017 Richard Uhler <ruhler@google.com> Reorganize ahat source directory layout.

In particular, use a directory tree that reflects the Java package
tree to facilitate use of IDEs for browsing the ahat source code.

Test: m ahat-test
Change-Id: I00c205df420c2a53b211f7b772dd5b45cedf6ae3
bdff6fee3226308a6639b57b76f4e65e3b687ca4 25-Sep-2017 Richard Uhler <ruhler@google.com> Don't build ahat tests with EMMA_INSTRUMENT.

Fixes build failure.

Test: mma, in art/tools/ahat directory
Test: mma EMMA_INSTRUMENT=true, in art/tools/ahat directory
Change-Id: I0c7b5c54eaa18138e1b1c49d9fa54a69030134b6
d2c751668d3c2d1399fb5291260435b92f75bc33 22-Sep-2017 Richard Uhler <ruhler@google.com> Don't build ahat tests for mac.

Because they require running ART, which isn't supported on mac.

Change-Id: Ic4dea4a7cbbd8932694c0a2dd153e50e638ab171

Test: m ahat-test, but I can't test it fixes the mac locally.
26a982ad022a254ac57f84e996c31b4e271de028 23-Aug-2017 Richard Uhler <ruhler@google.com> Remove last remaining guava dependencies.

ajat.jar reduced in size from 2.3MB down to 135KB.

Test: m ahat-test, with HtmlEscaperTest added.
Change-Id: I9a71ea46d1c953380ae3b07f3503ef16e4b97c8d
a3b7cf0f12da448664536f8b7c793e73da0a4c7f 26-Jul-2017 Richard Uhler <ruhler@google.com> Use a custom parser implementation instead of perflib.

Removes the dependency on perflib, avoids bugs in the perflib parser
whose fixes would not be readily available for ahat to use in the short
term, and avoids the need to pull in additional dependencies required to
use future versions of perflib.

Improves heap dump processing performance by 30-50% on some examples now
that we can avoid overheads due to the impedance mismatch between
perflib's object representation and ahat's object representation.

Other relevant changes included in this CL:
* Introduce enums for root types and basic types.
* Compute instance sizes on demand rather than eagerly.
* Introduce an abstraction for a collection of instances sorted by id.

Bug: 28312815
Bug: 33769446
Bug: 65356532
Test: m ahat-test, this change fixes all previously failing tests.
Change-Id: Ib14c294aa745cb03b02fa81d1544c78ff35e1edc
72f0ec717ce1ee13108d65af83fc99f8e507d75d 13-Sep-2017 Richard Uhler <ruhler@google.com> ahat: Expand test coverage using static heap dumps.

A limitation of the existing ahat test framework was that it was only
easy to test heap dumps generated as part of building the ahat tests.

This change adds static heap dumps from previous versions of Android
to test issues that were specific to previous versions or that are
easier to test with a hard-coded heap dump file.

The test heap dumps are now stored as resources in ahat-test.jar
rather than being passed to ahat-test.jar using system properties.

Fixes a couple of minor bugs encountered when expanding tests.

There are currently two failing tests:
1. Thread roots are not properly marked.
2. Root records not in the default heap are not properly marked.

Test: m ahat-test, from clean build, with new tests added.
Bug: 65356532

Change-Id: I3fa77e2e75d535a1dd68a763c7c45913a9e4074d
0b21333dbdbcb02c96148456f409f1b7d1f20697 24-Apr-2017 Richard Uhler <ruhler@google.com> ahat: build ahat-test-dump correctly with javac

Use BUILD_JAVA_LIBRARY instead of BUILD_HOST_DALVIK_JAVA_LIBRARY for
ahat-test-dump.jar so that no special handling is needed to enable
proguard obfuscation. This way the ahat-test-dump can be obfuscated
when compiled with javac as well as jack.

Bug: 64594350
Test: m ahat-test, built from scratch
Change-Id: Iad2890b314982b08da876595c3a093cd8ec9f7da
f629cfdbf6da3409aff177352e9ff41209b4570c 12-Dec-2016 Richard Uhler <ruhler@google.com> ahat: add support for diffing two heap dumps.

ahat now has the option to specify a --baseline hprof file to use as
the basis for comparing two heap dumps. When a baseline hprof file is
provided, ahat will highlight how the heap dump has changed relative
to the hprof file.

Differences that are highlighted include:
* overall heap sizes
* total bytes and number of allocations by type
* new and deleted instances of a given type
* retained sizes of objects
* instance fields, static fields, and array elements of modified objects

Also:
* Remove support for showing NativeAllocations, because I haven't ever
found it to be useful, it is not obvious what a "native" allocation
is, and I don't feel like adding diff support for them.
* Remove help page. Because it is outdated, not well maintained, and
not very helpful in the first place.

Test: m ahat-test
Test: Run in diff mode for tests and added new tests for diff.
Test: Manually run with and without diff mode on heap dumps from system server.
Bug: 33770653
Change-Id: Id9a392ac75588200e716bbc3edbae6e9cd97c26b
cda4f2e72f569e0a0d6119c1c75284fd44df79ab 09-Sep-2016 Richard Uhler <ruhler@google.com> Refactor ahat's perflib api.

This change substantially refactors how ahat accesses heap dump data.
Rather than use the perflib API directly with some additional
information accessed on the side via AhatSnapshot, we introduce an
entirely new API for accessing all the information we need from a heap
dump. Perflib is used when processing the heap dump to populate the
information initially, but afterwards all views and handlers go
through the new com.android.ahat.heapdump API.

The primary motivation for this change is to facilitate adding support
for diffing two heap dumps to ahat. The new API provides flexibility
that will make it easier to form links between objects in different
snapshots and introduce place holder objects to show when there is an
object in another snapshot that has no corresponding object in this
snapshot.

A large number of test cases were added to cover missing cases
discovered in the process of refactoring ahat's perflib API.

The external user-facing UI may have minor cosmetic changes, but
otherwise is unchanged.

Test: m ahat-test, with many new tests added.
Bug: 33770653

Change-Id: I1a6b05ea469ebbbac67d99129dd9faa457b4d17e
932b19ae77b2b15635ea5060baec0ca939d5db86 28-Nov-2016 Paul Duffin <paulduffin@google.com> Use junit-host instead of junit

Bug: 30188076
Test: make checkbuild
Change-Id: Ia54aeae56f49123885765bc896c00fd363e93c26
ec78c78508fa5ef6bac78ee2face0d30e67cf913 13-May-2016 Richard Uhler <ruhler@google.com> Add support for proguard deobfuscation.

Test: m ahat-test, with obfuscation of test-dump.hprof added.
Bug: 25812772
Change-Id: I0f257432da570aa146e6bb5c549f014aecc0c326
6928649223312692f9e2401c34dac37510ddbb2f 20-Sep-2016 Richard Uhler <ruhler@google.com> ahat: Show GC Root Paths.

The Dominator Path in the objects view is replaced by an augmented
Sample Path from GC Root, which includes non-dominator objects
along a sample path and field names.

Also, use blanks instead of "0" in heap tables when the size is 0.
This cleans up the pages a little, and conveniently lets us
distinguish between dominator and non-dominator objects in the Sample
Path from GC Root.

Test: m ahat-test, with new InstanceUtils.gcRootPath test added.

Bug: 27299030
Change-Id: I53d75f9dcb3157c2b5b3afc74958711536cd67b6
cd8a057350aceab9ca48a4720aaa21806b041799 17-Sep-2016 Dan Willemsen <dwillemsen@google.com> Move ART_HOST_TEST_DIR to Android.common_test.mk

I'm improving Kati's re-run detection, and this $(shell echo $$PPID) now
now causes us to reparse all of the makefiles every time, since it
really does change on each execution. But if you aren't running the ART
tests, this doesn't actually get used.

So punt this over to only executing when you're including the test
runner -- it's not ideal, since you'll be reparsing the makefiles every
time you want to run the tests. Depending on the desired behavior, this
should be able to be implemented without depending on the PID of Kati,
or the test runner can be moved out of the build system, since most of
the builds here have moved to Soong now.

Bug: 30947985
Test: Compare build.ninja before and after this change, only change is
the valgrind-test-art-target* targets.
Test: m -j test-art-host
Change-Id: Ibbc0f20e407bf70bce64d3428be5808d78bdaf91
69272db247cfb99a9060f849762aa6ce3959788e 06-Aug-2016 Richard Uhler <ruhler@google.com> ahat: Target Java 1.7.

So that users can run ahat with Java 7 without getting unsupported
major/minor version errors.

Change-Id: I76faab19bc1b14c76d5fd6b3ba19fcb07855dfd9
Test: m ahat-test
Test: /usr/local/buildtools/java/jdk7/bin/java -jar ahat.jar
Test: /usr/local/buildtools/java/jdk8/bin/java -jar ahat.jar
Bug: 28303627
c5a0004ac86f976011723c176b589cc99c99e180 01-Jul-2016 Richard Uhler <ruhler@google.com> Add missing dependency required for ahat-test.

Change-Id: I8f7afc97a82fadcdd2f18032900f2b8d8b2059bf
Test: rm -r out/ && m ahat-test
Test: rm -r out/ && m build-art-host
Test: rm -r out/ && m build-art-host-tests
Test: rm -r out/ && m build-art-target
Test: rm -r out/ && m build-art-target-tests
3fbfab11b56cca0167c1af404ececa3651331f80 06-Jul-2016 Richard Uhler <ruhler@google.com> Revert "Add missing dependency required for ahat-test."

This reverts commit 13f6d39da8ba6450dc861c4bfd09d21f3b403d4b.

Breaks 'build-art-target'.
https://build.chromium.org/p/client.art/builders/mips64-emulator-debug/builds/5651/steps/build%20target/logs/stdio

Change-Id: I1466f92308955604ecfcac65deff86cb581d6fdc
13f6d39da8ba6450dc861c4bfd09d21f3b403d4b 01-Jul-2016 Richard Uhler <ruhler@google.com> Add missing dependency required for ahat-test.

Change-Id: Ifeb4a5ca0ba192b6ae85177cafa7d773c979379f
Test: rm -r out/ && m ahat-test
fa8598dc6ef0358c20109faf58101425bbd80941 01-Mar-2016 Dan Willemsen <dwillemsen@google.com> Remove references to $(ACP)

We're changing the implementation of these macros to not use acp.
Instead of having to keep this in sync, move to using a standard
prebuilt module. The build system has been updated to explicitly add the
executable bit to prebuilt modules in the EXECUTABLES class.

Change-Id: I29cf4d48619e022b7da65ef2df05a92bed08a456
0524aebba5b96d66ad23805215df6a42e44a6e83 13-Oct-2015 Richard Uhler <ruhler@google.com> Switch ahat test to use core-optimizing-pic.art.

To match the recent change to the 'art' script.

Change-Id: I996e562bf967881b30ed3065caf6ce6bf8adc18f
3524472e8f064dbd42e1a35d511a1efe36d2cbf2 11-Sep-2015 Richard Uhler <ruhler@google.com> Generate an hprof file to test ahat.

This change sets up the infrastructure to write test cases for ahat
that make use of an hprof file automatically generated from a sample
program.

Change-Id: Id11f656afb69c96a26655cc4caeb745ad844f431
b730b78dac047c6d8ead93ad77605bcb7414f5ce 16-Jul-2015 Richard Uhler <ruhler@google.com> ahat - An android heap dump viewer. Initial checkin.

ahat is an android-aware heap dump viewer based on perflib with a
simple html interface.

Change-Id: I7c18a7603dbbe735f778a95cd047f4f9ec1705ef