before reporting a path that goes through VM objects.
When a user attempts to check the retaining path of an instance of a
class, previously Observatory would report the first path found, even
if the path contains multiple VM objects.
Now, Observatory will attempt to find a path through the user fields and
ignores all VM objects aside from said fields. If that fails, it
defaults to the original algorithm.
BUG=
R=asiva@google.com, cbernaschina@google.com, rmacnak@google.com
Review-Url: https://codereview.chromium.org/2990643002 .
i.e. #ifndef VM_WHATEVER -> #ifndef RUNTIME_VM_WHATEVER
This lets us remove a hack from the PRESUBMIT.py script that existed
for reasons that are no longer valid, and sets us up to add some
presubmit checks for the GN build.
R=asiva@google.com, rmacnak@google.com
Review URL: https://codereview.chromium.org/2450713004 .
- Dominator tree with retained sizes
- Merge nodes by class
- Split snapshot into chunks so the browser's websockets implementation can handle them.
- Use TypedData indexed by node ids instead of lists of objects and a higher time complexity but more memory efficient algorithm to find the dominator tree (reduces memory usage to ~2X the size of the heap being analyzed from >10X).
R=johnmccutchan@google.com, koda@google.com
Review URL: https://codereview.chromium.org//1124153006
Add retaining_path instance command to VM service, exposed in the Observatory
with a [find] eval-link in instance view. By default shows up to 10 elements,
possibly followed by [find more] which doubles the number of elements shown.
Change RetainingPath to include the object itself.
Always include an id in Object::PrintJSONImpl, to avoid instance-ref crashing on
internal objects.
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//292663012
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@36516 260f80e4-7a28-3924-810f-c04153c831b5
Features:
* Performs a pre-order, depth-first search.
* Allows the visitor to direct whether to
proceed, backtrack, or abort.
* Provides a complete chain of parents to the root.
(unlike the GC marking stack).
The plan is to use this in the observatory, e.g.:
* inspect a path from the isolate roots to a particular object, or
* determine how much memory is kept alive by some particular object or class of objects.
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//266643002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35711 260f80e4-7a28-3924-810f-c04153c831b5