Service:
- [x] Add "_profilerMode" to VM response. "VM" or "Dart" depending on --profile-vm flag.
- [x] Output a tree where VM tag are treated as executing "exit frame" functions when profiling Dart.
- [x] tick "exit frame" tag functions when profiling Dart.
Observatory:
- [x] don't include option for VM tags when profiling Dart.
- [x] default to no tags when profiling Dart.
- [x] indent the colored bar closer to the down arrow.
- [x] don't show percentages for user tag rows.
- [x] Update cpu profile table view to use virtual tree.
- [x] Update class allocation view to use virtual tree.
BUG=
R=rmacnak@google.com
Review URL: https://codereview.chromium.org/1851293005 .
- [x] Remove Stop / Start buttons and replace with fine grained category control.
- [x] Restrict the cpu profile to the time span of the timeline.
- [x] Display recorder name.
- [x] Show a popup when fetching the timeline from the VM.
- [x] Show a popup when fetching the cpu profile(s) from the VM.
Fixes#26401Fixes#26394
BUG=
R=rmacnak@google.com
Review URL: https://codereview.chromium.org/1972523003 .
- Add new VirtualTree view model. Only renders visible tree rows and keeps DOM load light regardless of tree size.
- Port Observatory profiler UI to new VirtualTree.
- sra's dart2js stress test instantly displays with this CL
Some trade offs:
- We get instant tree expand / collapse but scrolling is slower / janky. Need to investigate how to make this fast.
(short term) loss of functionality:
- UI is minimal for now. We don't display the attribute boxes or the InfoBox button.
R=rmacnak@google.com
Review URL: https://codereview.chromium.org/1833453004 .
- Don't tick vm tags for background threads so the Observatory's summary pie chart reflects how the mutator spent its time.
- Similarly, don't factor background samples in the CPU profile view.
- Do include background samples in the timeline view.
Use a different event name for background compilations.
Add timeline events for the mark and sweep tasks.
Reload the isolate list when refreshing the timeline view so it includes profile ticks when the page is loading directly (e.g., F5) instead of only after visiting the vm page.
Fix loading the timeline when profiling is disabled.
BUG=
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org/1814813003 .
class-tree
- Make all the rows have the same height.
- Hide synthetic mixin classes from the tree.
- Show mixin information in a different way.
- Show the total subclass count for each row if non-zero.
class-view
- Display supertype and mixin information
instance-view
- Display typeArguments, parameterizedClass, parameterIndex,
targetType and bound information for Types.
- Display a source for Types.
- Provide an [eval] link for the runtimeType.
isolate-view
- Display the list of extension rpcs.
Update service.md.
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org/1807263004 .
- Rename TimelineEventStreamingRecorder to TimelineEventCallbackRecorder. Note that this should only be used for tests.
- Add 'Timeline' service event stream.
- Send a 'TimelineEvents' event on the 'Timeline' stream whenever a TimelineEventBlock is finished and the 'Timeline' stream is subscribed to.
- Simple service protocol test.
R=turnidge@google.com
Review URL: https://codereview.chromium.org/1765563002 .
Fixes#25902
Issue #1
Assuming --pause-isolates-on-start, there is a window of time after an isolate is made runnable and before it pauses at the first message that we say the isolate is "resumed".
- Fix issue #1 by claiming the isolate is paused on start if it will eventually pause on start.
- Also, handle the resume command for this state by clearing the 'should pause on start' bit.
Issue #2
Before an isolate is made runnable we say the isolate is "resumed".
- Fix issue #2 by introducing a new pause event "None".
R=turnidge@google.com
Review URL: https://codereview.chromium.org/1756393002 .
Fixes#25815
VM changes:
- Don't crash in SignalExceptionThrown when we have no stack frames.
- Notify the debugger about an unhandled stack overflow / OOM *after* setting the sticky error. This allows Observatory to display it.
- When pausing without a debugger attached, print the sticky error if one is set.
- Improve stack trace frame numbers when printing for a stack overflow.
Observatory changes:
- Report the sticky error for pause at unhandled exception as well as exit.
- Let the user know that we cannot pause for unhandled stack overflow / OOM exceptions.
- Don't show the "at <func> (<script location>)" string in the isolate summary, if we don't have a top frame.
R=rmacnak@google.com
Review URL: https://codereview.chromium.org/1709383002 .
- Split service test common helper into separate file.
- Make many tests easier to adapt to line number changes.
- Refactor test launching in preparation of running these tests against sky_shell
- Pass --testee-mode as an environment variable instead of of a command line flag because Flutter applications cannot receive command line arguments.
BUG=
R=rmacnak@google.com
Review URL: https://codereview.chromium.org/1726773002 .
Additions to service protocol:
- PauseEvent includes an "atAsyncContinuation" boolean value.
- Resume command can take an 'OverAsyncContinuation' step mode.
- Breakpoints have an optional 'isSyntheticAsyncContinuation' boolean value.
Added low level step_over_await_test.
Issuing the OverAsyncContinuation resume command does the following:
- Adds a synthetic breakpoint (#1) to the async closure.
- Resumes the isolate.
- When we hit #1, the VM issues a StepOver and then reports us paused at #1.
At the next resume command, the VM will remove #1.
R=rmacnak@google.com
Review URL: https://codereview.chromium.org/1699153002 .
- Add --timeline-streams= flag which takes a comma separated list of streams to record.
- Send "availableStreams" and "recordedStreams" in the _getVMTimelineFlags RPC. Also include the type of recorder we are using.
- Enable setting of "recordedStreams" in the _setVMTimelineFlags RPC.
R=zra@google.com
Review URL: https://codereview.chromium.org/1690333002 .
- When an isolate is paused at exit and has a sticky error, have the debugger display the error.
- Add --pause-isolates-on-unhandled-exceptions flag which sets a default value for break-on-exception.
- Have the debugger display help text about 'set break-on-exception' and '--pause-isolates-on-unhandled-exceptions'
- Signal an unhandled exception even if no client is connected to Observatory.
R=rmacnak@google.com
Review URL: https://codereview.chromium.org/1636083002 .
We now use getSourceReport to get an accurate list of possible
breakpoints rather than relying on inaccurate heuristics. This means,
for example, that variable declarations will stop being labeled
incorrectly as potential breakpoints.
BUG=
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org/1590353002 .
Move script reloading into the script inset instead of the navbar.
Make the refresh icon do a sticky-header scroll thing (fancy!).
Remove old coverage code from observatory.
BUG=
Review URL: https://codereview.chromium.org/1584173003 .
- Add dart:developer.postEvent for posting events to the service protocol.
- Add 'Extension' service protocol event stream.
- Unit test.
- Update service.md
- Bug fix for logging stream.
R=turnidge@google.com
Review URL: https://codereview.chromium.org/1537523002 .
- Add missing breadcrumbs to class heirarchy, flags and timetime view.
- Truncate large objects by default so we can look at them without falling over.
- Demangle local variable names.
R=turnidge@google.com
Review URL: https://codereview.chromium.org/1463123002 .
[1] has worse upper bound complexity than [2] but has lower
overhead. With [1] dart2js heaps would converge in ~10 iterations, but
with analyzer heaps would take ~10k iterations.
This reduces the time to analyze the final heap of the analyzer
analyzing dart2js from ~30 minutes to 26 seconds.
Increases peak memory usage by 21N bytes plus O(2N) words.
[1] "A Simple, Fast Dominance Algorithm." Keith D. Cooper, Timothy
J. Harvey, and Ken Kennedy.
[2] "A Fast Algorithm for Finding Dominators in a Flowgraph."
T. Lengauer and R. E. Tarjan.
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org/1449243002 .