Commit Graph

1103 Commits

Author SHA1 Message Date
Ryan Macnak 0bb41de8ff Fix leak when timeline event names or arguments are OneByteStrings not expressible in ASCII.
Change-Id: Ieca5e748c12364f11231f78f4e87e374079765d4
Reviewed-on: https://dart-review.googlesource.com/8702
Reviewed-by: Erik Corry <erikcorry@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2017-09-27 02:45:15 +00:00
Ryan Macnak 9dd3730ea2 Revert "[reload] Add facility to check for program elements changed in the last reload but not executed."
This reverts commit 4a0d5cbf3f.

Change-Id: Ic90f78443b5c1878ac6f17a1a1439f8e4515db42
Reviewed-on: https://dart-review.googlesource.com/7681
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2017-09-21 22:56:39 +00:00
Ryan Macnak 4a0d5cbf3f [reload] Add facility to check for program elements changed in the last reload but not executed.
Change-Id: Ifdc73166be68c5d2915e8b9d71db0a09d06835a0
Reviewed-on: https://dart-review.googlesource.com/5330
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2017-09-21 20:28:06 +00:00
Ryan Macnak 3d21a46b72 Limit preserialized JSON for timeline events from Dart code to the arguments.
Avoids string copies in C++ and map copies in Dart.

Also remove some vestiages of removed feature that allowed an embedder to add pre-encoded events to the timeline.

Change-Id: I962a67093ba461c991d9169b0391c44af1d489db
Bug: https://github.com/dart-lang/sdk/issues/30787
Reviewed-on: https://dart-review.googlesource.com/6762
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2017-09-19 23:29:55 +00:00
Beeravolu Siva Chandra Reddy 004a515217 Populate library imports and exports when loading library from kernel.
Change-Id: If6cc94aa186948caa8798212d6161da650ff2d8e
Reviewed-on: https://dart-review.googlesource.com/4381
Reviewed-by: Jens Johansen <jensj@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2017-09-12 10:44:49 +00:00
Carlo Bernaschina 5534568ff1 Make service protocol respect isolate lifecycle
Status:
- Currently the getIsolate API tries to guess the status of the isolate
  when it is in between the IsolateRunnable and PauseStart, by reporting
  it as already in the PauseStart status.
  This can potentially make flaky all the tests that uses PauseStart to
  synchronize with the actual status of the Isolate.
- In the previous situation the timestamp of the event is guessed too,
  potentially reporting a wrong value.
- Even with the previous fix the is still a race condition that can lead
  to a getIsolate responde with a PauseStart status to be sent before
  the actual PauseStart event.

Changes:
- Fallback to None pause event if the isolate is in between
  IsolateRunnable and PauseStart, avoiding double posting.
- Send the PauseStart event before the actual status change, partially
  avoiding the race conditions.
- Set the pause timestamp before the actual status change, fully
  avoiding the race condition.

Closes https://github.com/dart-lang/sdk/issues/28624

R=asiva@google.com, rmacnak@google.com

Review-Url: https://codereview.chromium.org/3006883002 .
2017-08-30 17:09:36 -07:00
Ryan Macnak b7a0458196 [observatory] Add an "ownership" analysis for the heap snapshot.
An object A is said to be owned by object B if all direct references to A come from B. In particular, an object that holds unshared lists and maps will own the heap size of those lists and maps, as well as any unshared elements. We hope a table of owned sizes will be more useful than a table of shallow sizes, since the latter typically says the heap is mostly lists.

R=cbernaschina@google.com

Review-Url: https://codereview.chromium.org/3009743003 .
2017-08-30 09:50:57 -07:00
Carlo Bernaschina ad280c8c6c Mark issue_30555_test as flaky
TBR=rmacnak@google.com

Review-Url: https://codereview.chromium.org/3011583002 .
2017-08-29 17:50:21 -07:00
Carlo Bernaschina 39f2dce9d5 Fix issue_30555_test with dartk compiler
Related https://github.com/dart-lang/sdk/issues/30555

TBR=rmacnak@google.com

Review-Url: https://codereview.chromium.org/3008833002 .
2017-08-29 14:44:00 -07:00
Carlo Bernaschina cdd3f4f9e5 Restore "Avoid to run dart code during paused_on_exit"
This restores https://github.com/dart-lang/sdk/commit/20066b625a723d0bca4a13afe408e9d6b1442e0e
That was reverted in https://github.com/dart-lang/sdk/commit/ea3526344ae8460ea50cd73b94904eddda816182
Related https://github.com/dart-lang/sdk/issues/30555

R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/3006743003 .
2017-08-29 13:02:09 -07:00
Carlo Bernaschina ea3526344a Revert "Avoid to run dart code during paused_on_exit"
This reverts commit 20066b625a.

TBR=asiva@google.com

Review-Url: https://codereview.chromium.org/3011563002 .
2017-08-29 12:14:58 -07:00
Carlo Bernaschina 20066b625a Avoid to run dart code during paused_on_exit
When a MessageHandler gets to the paused_on_exist state it should just handle service events.

If ports are open though, at the next message the isolate will consider itself still alive and handle any kind of request.

The MessageHandler is now checking for its paused_on_exit state and avoid to handle normal messages in that state.

Closes https://github.com/dart-lang/sdk/issues/30555

R=asiva@google.com

Review-Url: https://codereview.chromium.org/3010503002 .
2017-08-29 11:14:59 -07:00
Carlo Bernaschina 89e72c7bb5 Hide internal classes from Memory Profile
The Service Protocol exposes a new private RPC _getDefaultClassesAliases
which returns a Map from internal classes to a String.

This Map is used to group internal classes and to avoid navigation to
patch files.

R=asiva@google.com

Review-Url: https://codereview.chromium.org/3003903002 .
2017-08-28 18:18:51 -07:00
Jens Johansen 656b495df8 Mark service test as runtime error
Snapshots don't include source and generated source is not 1-to-1.
The column offset is off for this test.

BUG=

Review-Url: https://codereview.chromium.org/3011493002 .
2017-08-28 12:26:25 +02:00
Jens Johansen 1ad24e4b46 [kernel] Add offset to SwitchContinueStatement; add debugging test
BUG=
R=johnniwinther@google.com

Review-Url: https://codereview.chromium.org/3004693002 .
2017-08-28 12:01:03 +02:00
Carlo Bernaschina cf4cc1973a Refactor Isolate name format, storage and log
At the moment isolated has a name field which is on the main_port the
only exception is the vm-service isolate.
The name is used just for logging.

The service protocol though uses an extra field called debugger_name,
that at this moment is redundant and is optimized away during
compilation.

BUG=
R=rmacnak@google.com, zra@google.com

This CL:
- Removes the debugger_name in favor of a modifiable name
- Adds to all the log where the name was logged the main_port (that is
  the only real identifier)
- Changes the default format of the isolate name from:
    <script_uri>$<main>
  to:
    <script_uri>:<main>()
Review-Url: https://codereview.chromium.org/3004563003 .
2017-08-25 18:07:03 -07:00
Carlo Bernaschina b87e991af2 Restore "Speedup Observatory elements first time rendering"
The CurlyBlockElement was using a hack to speedup rendering to allow
RetainingPathElement and InboundReferencesElement to pass the tests.

- Removed hack from CurlyBlockElement
- Converted RetainingPathElement and InboundReferencesElement to the
  waitFor APi.

Related https://github.com/dart-lang/sdk/commit/7568ed5f69e384e1832757a6c27d343616626afb

R=asiva@google.com, bkonyi@google.com

Review-Url: https://codereview.chromium.org/2995923002 .
2017-08-18 17:09:02 -07:00
Carlo Bernaschina 0cbbeeb288 Restore "Add current rss and embedder name to Observatory"
Made benchmark_test.cc independent from Service by using the
implementation of MaxRSS from bin::Process

Related https://github.com/dart-lang/sdk/commit/ce736d3ef009bf334a92d5b7d354fc0b04805b4f

R=bkonyi@google.com
TBR=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2994223002 .
2017-08-14 17:02:30 -07:00
Carlo Bernaschina 2f5a59e658 Revert "Add current rss and embedder name to Observatory"
This reverts commit ce736d3ef0.

TBR=zra@google.com

Review-Url: https://codereview.chromium.org/2999933002 .
2017-08-14 15:45:13 -07:00
Carlo Bernaschina ce736d3ef0 Add current rss and embedder name to Observatory
Moved the responsibility to provide MaxRSS and CurrentRSS from the VM to
the embedder.

The embedder can opt-it by setting a Dart_GetEmbedderInformation
callback using the public Dart_SetEmbedderInformationCallback API.

The implementation of the Dart_GetEmbedderInformation should mandatory
fill the version field and the ones it is able to fill.
The name field must reference a constant C style string, it will not be
freed by the VM code.

R=zra@google.com

Review-Url: https://codereview.chromium.org/2996803002 .
2017-08-14 15:22:46 -07:00
Carlo Bernaschina d340f75e15 Fix wrong reference to cpu_profile.dart
TBR=asiva@google.com

Review-Url: https://codereview.chromium.org/3000833002 .
2017-08-11 13:13:31 -07:00
Carlo Bernaschina fb565cfba4 Clear analyzer warning on Observatory
- https://github.com/dart-lang/sdk/commit/f8e47a9e26c9ee44f431ed20d4507d98acbc257d
  Introduced some analyzer warnings into Observatory.

- Added missing forward of the forceFetch parameter

- Removed two abstraction breaks

R=rmacnak@google.com

- Applying TODO
  https://github.com/dart-lang/sdk/blob/ccadb4687c8af4b02a046669b9d50dd52edd1112/runtime/observatory/lib/src/cpu_profile/cpu_profile.dart#L750
Review-Url: https://codereview.chromium.org/2999763002 .
2017-08-11 12:36:32 -07:00
William Hesse fd7dc64a1c Update observatory tests with test path to webcomponents-lite.
BUG=
R=cbernaschina@google.com

Review-Url: https://codereview.chromium.org/2995733003 .
2017-08-10 18:45:52 +02:00
Ryan Macnak f8e47a9e26 Reapply "[vm] Don't enable the profiler by default. Enable the profiler at startup with --observe, or later through Observatory."
Ensure we still start NativeSymbolResolver even if the profiler is off, since it is also used name weak handler finalizer functions and to produce stack traces for crashes.

R=bkonyi@google.com

Review-Url: https://codereview.chromium.org/2992893002 .
2017-08-09 11:20:58 -07:00
Dmitry Stefantsov eddc456f29 Revert "[vm] Don't enable the profiler by default. Enable the profiler at startup with --observe, or later through Observatory."
This reverts commit cc08f2ddd8.

R=whesse@google.com

Review-Url: https://codereview.chromium.org/2990173002 .
2017-08-02 11:30:16 +02:00
Ryan Macnak cc08f2ddd8 [vm] Don't enable the profiler by default. Enable the profiler at startup with --observe, or later through Observatory.
Note there is no option to disable the profiler. The profiler on Mac, Linux, and Android is based on SIGPROF, and there is no way to wait for all the outstanding signals as required to be able to safely free the sample buffer.

Saves ~20MB on 64-bit VMs.

R=cbernaschina@google.com, zra@google.com

Review-Url: https://codereview.chromium.org/2989093002 .
2017-08-01 17:57:08 -07:00
Zachary Anderson 633ed4cf83 [corelib] dart:developer timeline flow events
This change adds an API to dart:developer Timeline for
adding flow events to the timeline. For details see the
changes in:

sdk/lib/developer/timeline.dart

R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2985253002 .
2017-07-31 07:46:52 -07:00
Carlo Bernaschina c78e6ba70c Fix allocation profile test
The test was broken by https://github.com/dart-lang/sdk/commit/87aaa8bdb3cc36620992c06781194191d58fb18b
which changed the default sorting column

R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2990953002 .
2017-07-28 10:41:08 -07:00
Diogenes Nunez ced696af69 Calculates retaining paths through user fields and ignores VM objects
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 .
2017-07-27 13:24:48 -07:00
Bob Nystrom 012774c78e Remove Dartium support from test.dart.
R=whesse@google.com

Review-Url: https://codereview.chromium.org/2981223002 .
2017-07-20 12:46:50 -07:00
Siva Chandra cf07adc873 Allow setting breakpoints in function literal field initializers under --dfe.
The change 3b9cf7351b fixed #29581 for the
case when --dfe is not used. This change fixes the issue for the --dfe
configuration as well.

Tests which now pass have been taken out of the status files.

R=asiva@google.com

Review-Url: https://codereview.chromium.org/2979163002 .
2017-07-19 13:17:25 -07:00
Vyacheslav Egorov c6815e8522 Reapply 0489249d29 with a fix for front_end tests.
Proper sequencing of _asyncStackTraceHelper in Kernel

This helper function was being called before its argument was
initialized so it was passing null.  Instead, it should be called
after its argument is initialized.

Because the initialization happens in Kernel code, it is simplest to
insert the call explicitly in Kernel code as well as part of the async
transformation.  This has the consequence that we now call the helper
function even when the flag causal_async_stacks is false.

Fixes issue #29771.
Fixes issue #30178
Fixes issue #30058

BUG=
R=aam@google.com, asiva@google.com

Review-Url: https://codereview.chromium.org/2936793003 .
Review-Url: https://codereview.chromium.org/2982943002 .
2017-07-17 20:56:28 +02:00
Carlo Bernaschina df8bf384eb Introduce external services registration
A new RPC is introduced `_registerService` which allow clients to
register new services that are accessible from all the other clients.

Each registered endpoint is identified by 3 strings:

 - `service`
   a non empty string which identifies the provided service
   (e.g. `HotReload`, `OpenFile`)
 - `alias`
   an alias for that particular endpoint used by clients to identify it
   (e.g. `Flutter`, `IntelliJ`)
 - `method` __generated__
   the RPC method that should be invoked from a client to request it

A new _stream_ `_Service` is introduce, and two related events:

 - `ServiceRegistered`
   which is triggered when a new client is registered.
   All the related information (`service`, `alias`, `method`) are sent.

 - `ServiceUnregistered`
   which is triggered when a client, which previously registered a
   service, disconnects.
   Just `service` and `method` are sent.

Related https://github.com/dart-lang/sdk/issues/30023

R=asiva@google.com, bkonyi@google.com

Review-Url: https://codereview.chromium.org/2980733003 .
2017-07-13 18:18:51 -07:00
Carlo Bernaschina 5609841212 Fixed observatory_ui/vm_connect test in checked mode
TBR=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2979433002 .
2017-07-07 14:26:25 -07:00
Carlo Bernaschina 15970f2a7e Fixed synchronization problem in FF and Safari for virtual-tree test
Closes #30087

R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2968283002 .
2017-07-07 13:39:46 -07:00
Carlo Bernaschina 992c4aa8ad Restored vm-connect Observatory_UI tests
Closes #27714

R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2972133002 .
2017-07-07 13:34:33 -07:00
Lasse R.H. Nielsen 4174896332 Mark failing test as failing.
Committed: https://github.com/dart-lang/sdk/commit/38625a1a3488b4b3440c11bb4e32d79bf594adbb
Review-Url: https://codereview.chromium.org/2973603004 .
2017-07-06 12:59:11 +02:00
Lasse R.H. Nielsen 38625a1a34 Mark failing test as failing.
Review-Url: https://codereview.chromium.org/2973603004 .
2017-07-06 10:25:48 +02:00
Carlo Bernaschina 6be07a30bc Avoid Stack Overflows during VirtualTree expansion
R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2968813002 .
2017-07-05 17:47:00 -07:00
Ryan Macnak 399ade26aa [observatory] Add a 'GC' button to heap map.
R=cbernaschina@google.com

Review-Url: https://codereview.chromium.org/2953373002 .
2017-06-29 10:45:26 -07:00
Carlo Bernaschina 0d86f5f3c5 Added Editor stream and sendObjectToEditor RPC into Service Protocol
Related=https://github.com/dart-lang/sdk/issues/30023

R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2962593002 .
2017-06-29 10:08:12 -07:00
Erik Corry 029b1cb948 Spelling fixes e to i.
R=kevmoo@google.com
BUG=

Review-Url: https://codereview.chromium.org/2957593002 .
2017-06-24 13:41:39 +02:00
Zachary Anderson ac16656161 Remove MIPS support
R=asiva@google.com

Review-Url: https://codereview.chromium.org/2858623002 .
2017-06-22 08:49:22 -07:00
Kevin Millikin 8340cfda55 Revert "Proper sequencing of _asyncStackTraceHelper in Kernel"
This reverts commit 0489249d29.  The
change causes failures in the front end tests.

BUG=
R=sivachandra@google.com

Review-Url: https://codereview.chromium.org/2949533003 .
2017-06-19 17:21:22 +02:00
Kevin Millikin 0489249d29 Proper sequencing of _asyncStackTraceHelper in Kernel
This helper function was being called before its argument was
initialized so it was passing null.  Instead, it should be called
after its argument is initialized.

Because the initialization happens in Kernel code, it is simplest to
insert the call explicitly in Kernel code as well as part of the async
transformation.  This has the consequence that we now call the helper
function even when the flag causal_async_stacks is false.

Fixes #29771.

BUG=
R=aam@google.com, asiva@google.com

Review-Url: https://codereview.chromium.org/2936793003 .
2017-06-19 16:52:58 +02:00
Carlo Bernaschina e826fdcb6b Cleaned analysis result for observatory
BUG=
R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2940523003 .
2017-06-14 12:23:48 -07:00
Devon Carew 9ec724cd6b Address observatory analysis issues.
BUG=
R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2934973002 .
2017-06-13 15:58:01 -07:00
Ryan Macnak f02d34362e Revert "Address additional analysis issues in the observatory codebase."
This reverts commit 2ea426a509.

Platform.script doesn't necessarily point to source.

TBR=devoncarew@google.com

Review-Url: https://codereview.chromium.org/2935873002 .
2017-06-12 15:10:35 -07:00
Devon Carew 2ea426a509 Address additional analysis issues in the observatory codebase.
BUG=
R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2930993004 .
2017-06-12 13:11:59 -07:00
Devon Carew 5d0b5e3011 Remove the analyzer super mixin ignore on evaluate_activation_in_method_class_test.
BUG=

Review-Url: https://codereview.chromium.org/2925323005 .
2017-06-09 00:28:50 -07:00