Commit Graph

11486 Commits

Author SHA1 Message Date
Vyacheslav Egorov f566a1e61c VM: Fix build on GCC which requires explicit initialization of the base class
in the copy constructor.

TBR=fschneider@google.com

Review-Url: https://codereview.chromium.org/2738733002 .
2017-03-07 18:24:18 +01:00
Vyacheslav Egorov da5cd4197a VM: Remove ZoneCompileType class.
This auxiliary wrapper was introduced originally to work-around an assertion
in ZoneAllocated destructor which was preventing us from using descendants of
ZoneAllocated as value objects. That assertion was removed some time ago
which means ZoneCompileType is not needed anymore and CompileType can
become ZoneAllocated instead.

R=fschneider@google.com
BUG=

Review-Url: https://codereview.chromium.org/2739643002 .
2017-03-07 17:29:02 +01:00
Dmitry Olshansky a1f784e643 Revert "Replacing TrySync with Metadata"
This reverts commit cf08eebc71.

TBR=vegorov@google.com

Review-Url: https://codereview.chromium.org/2739663002 .
2017-03-07 16:17:59 +01:00
Vyacheslav Egorov 9bd34ef785 VM: [Kernel] Set DoubleInitializedBit on fields with double initializers.
If this field is not set correctly then background compiler constantly bails
out when encoutering stores to these fields.

R=erikcorry@google.com
BUG=

Review-Url: https://codereview.chromium.org/2732273002 .
2017-03-07 14:52:52 +01:00
Jens Johansen 8e2bf308c1 Fix new service tests on windows; make status file more precise.
R=kmillikin@google.com

Review-Url: https://codereview.chromium.org/2734133003 .
2017-03-07 13:48:58 +01:00
Vyacheslav Egorov 64940df644 VM: [Kernel, Precompiler] Improve Function and Field hashes for objects originating from Kernel.
Currently Fasta does not assign any position information to these objects so we had a very bad hash for them.

BUG=
R=erikcorry@google.com

Review-Url: https://codereview.chromium.org/2739623002 .
2017-03-07 13:25:47 +01:00
Dmitry Olshansky b980b5a6e2 Fix SIMDBC64 build
R=vegorov@google.com

Review-Url: https://codereview.chromium.org/2733103004 .
2017-03-07 12:42:16 +01:00
Dmitry Olshansky cf08eebc71 Replacing TrySync with Metadata
Use that to sync variables to predefined stack
slots inside of exception handler, not before
each MayThrow() instruction.

In JIT mode we can avoid storing extra metadata
by using deopt info instead.

Introduce caching of metadata and
exception handler based on PC.

R=fschneider@google.com

Review-Url: https://codereview.chromium.org/2640853002 .
2017-03-07 11:33:07 +01:00
Jens Johansen 067b377a3c Mark new debugging stuff as flaky as it fails on mac/win/whatnot
BUG=

Review-Url: https://codereview.chromium.org/2732973006 .
2017-03-07 10:34:52 +01:00
Jens Johansen 9837563cd1 Kernel debugging; service tests
- Offsets on more stuff
- Status file for kernel
 -> Testing with (before fasta)
    ```
    python tools/test.py -mrelease -cdartk --no-tree-shake --no-dfe service
    ```
    now shows everything as passing.
    Reload stuff, and evaluation stuff (e.g.) has been disabled though.
- Lots of new service tests that tests what positions we stop at when
  saying next.

As fasta has now landed debugging does not currently work, but this is still needed in order to both test better and allow for proper kernel debugging support.

R=hausner@google.com, kmillikin@google.com

Review-Url: https://codereview.chromium.org/2680303002 .
2017-03-07 09:43:59 +01:00
Jens Johansen 137b85c114 Hide kernel isolate from isolate list; do not register it either
This is basically a copy of https://codereview.chromium.org/2689563010/
and https://codereview.chromium.org/2695013002/ - just hiding the kernel
isolate too.
That way, we won't see it and be confused when debugging via observatory.
Also, service tests could probably start working with the kernel isolate
too.

Still show isolate if passing "--show_kernel_isolate" though.

R=hausner@google.com

Review-Url: https://codereview.chromium.org/2690323003 .
2017-03-07 08:27:14 +01:00
Jens Johansen 1ba39faa3f Make observatory 'pub serve' work again in Dartium
pub serve in runtime/observatory with Dartium seems to have been broken
since c8e275537d.

When I try to make observatory connect I just get a blank page.
If I open Dartiums console I get a *long* stacktrace saying
"Caught exception: String Expected".

BUG=
R=kmillikin@google.com

Review-Url: https://codereview.chromium.org/2729773004 .
2017-03-07 08:21:31 +01:00
Matthias Hausner 2d0522b643 Better error message for unresolved super calls
Improve error message if super invocation resolves to a method
with an incompatible error message.

BUG=#27569
R=regis@google.com

Review-Url: https://codereview.chromium.org/2730193002 .
2017-03-06 10:27:59 -08:00
Zachary Anderson cbc9564f59 Use set_min_proto_version instead of set_min_version.
To align better with OpenSSL 1.1.0, BoringSSL is transitioning the APIs
from SSL_CTX_set_min_version to (the longer but more
upstream-compatible) SSL_CTX_set_min_proto_version.

BUG=
R=zra@google.com

Review-Url: https://codereview.chromium.org/2727663007 .
2017-03-06 08:49:44 -08:00
Erik Corry 634a9a673a ICData::NumberOfChecks is O(n) so don't call it in loops
R=kustermann@google.com
BUG=

Review-Url: https://codereview.chromium.org/2734883002 .
2017-03-06 17:03:22 +01:00
Erik Corry 2d4fbaed32 Fix assert in app-jit where heap verifier finds ICData
R=vegorov@google.com
BUG=

Review-Url: https://codereview.chromium.org/2734853002 .
2017-03-06 16:08:58 +01:00
Vyacheslav Egorov 890dff146a VM: Fix product precompiler, it must have FLAG_use_osr set to false.
In reality this flag was set to true which was caught by the new feature
checking

R=rmacnak@google.com
BUG=

Review-Url: https://codereview.chromium.org/2735473002 .
2017-03-03 23:41:40 +01:00
Ryan Macnak f10d354e98 Add --print-dependencies to gen_snapshot
Needed to fix https://github.com/flutter/flutter/issues/8514.

BUG=
R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2730943003 .
2017-03-03 13:28:24 -08:00
Ben Konyi f31c653b54 Added comments explaining why some code is not used / returns empty results as a result of issue #28885
BUG=
R=zra@google.com

Review-Url: https://codereview.chromium.org/2733613002 .
2017-03-03 12:23:40 -08:00
Ben Konyi 6e02846b6d Temporarily disabling JSON generation for Zone statistics to resolve flakiness in tests until a better implementation is written. Issue #28885 (https://github.com/dart-lang/sdk/issues/28885).
BUG=
R=zra@google.com

Review-Url: https://codereview.chromium.org/2728743003 .
2017-03-03 10:43:11 -08:00
Ben Konyi ed3322c450 Fixes issue #28904 and issue #28901. Fixed an out of range array access in the hash map Iterator::Next() method which was causing occasional crashes in tests.
BUG=
R=zra@google.com

Review-Url: https://codereview.chromium.org/2729813004 .
2017-03-03 10:37:22 -08:00
Vyacheslav Egorov 021f933f69 VM: Make use_osr an Isolate flag, similar to how we made use_field_guards.
In Debug mode we have assertions checking that we don't attempt OSR when
FLAG_use_osr is disabled - however app-jit snapshots are compiled with OSR
enabled and still contain countining and OSR attempting code, which causes
assertions to fail.

Refactor how getters for isolate flags are defined, consolidate all flags into
a single list.

Update test expectations and switch -c dartk configuration to use app-jit snapshot.

BUG=
R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2728163002 .
2017-03-03 19:02:23 +01:00
Vyacheslav Egorov c0c87b0afd GN: change the way we specify dependencies for the patched_sdk target.
Instead of listing all files as inputs in GN script using Python helper we make
patch_sdk.dart generate a depfile that Ninja can use:

            https://ninja-build.org/manual.html#_depfile

This prevents breakages when some dependencies are deleted and GN is not rerun.

R=ahe@google.com, kustermann@google.com
BUG=

Review-Url: https://codereview.chromium.org/2729503006 .
2017-03-03 14:52:51 +01:00
Matthias Hausner 356581ff76 Fix language/regress_28325 in precompiled mode
This is a follow-up CL to https://codereview.chromium.org/2727803002/
That fixes the stack trace in precompiled code.

BUG=#28770
R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2731593002 .
2017-03-02 14:12:20 -08:00
Matthias Hausner 408a64756e Fix setting breakpoint setting in await statements
CL https://codereview.chromium.org/2626753002 introduced a “real” token
position for the synthetic code that re-throws an exception returned
by an await’ed expression. This interferes with setting a breakpoint
in a line that contains an await, since the synthetic code happens to
be at the lowest compiled code address and will thus be picked as the
breakpoint location.

This CL makes the re-throw a synthetic token position again, but
includes synthetic token positions in stack traces. This is an alternative
fix for bug #28325.

BUG=#28770
R=fschneider@google.com

Review-Url: https://codereview.chromium.org/2727803002 .
2017-03-02 12:21:42 -08:00
Florian Schneider 67c42c7d10 Fix compiler warning with shift of negative value.
It seems newer versions of gcc complain about undefined behavior.

Fixes #28923.

R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2723233002 .
2017-03-01 10:47:07 -08:00
Kevin Millikin d921f94367 Change a C++ type to avoid triggering an ASSERT.
Malloc'd memory is uninitialized so C++ constructors are not run.  For
class Ref, operator= asserts (basically) that the constructor has been
run.

BUG=
R=asgerf@google.com

Review-Url: https://codereview.chromium.org/2723123002 .
2017-03-01 16:50:24 +01:00
Dmitry Stefantsov 9c340f9eb1 Revert last 4 commits by @lrn
Reverted commits:
* ef097edad6. ("Make Analyzer, VM and
  dart2js accept URI strings as part-of library identifier.")
* e8e1857814. ("Fix bad example of URI
  part-of to be bad, not good.")
* 58f7a92ede. ("Add changelog entry for
  allowing URI in part-of.")
* a4a7d98dce. ("Use FutureOr in
  Completer.complete.")

TBR=lrn@google.com

Review-Url: https://codereview.chromium.org/2724853002 .
2017-03-01 16:44:52 +01:00
Lasse R.H. Nielsen ef097edad6 Make Analyzer, VM and dart2js accept URI strings as part-of library identifier.
R=brianwilkerson@google.com, floitsch@google.com, hausner@google.com, johnniwinther@google.com, sigmund@google.com

Review-Url: https://codereview.chromium.org/2640853005 .
2017-03-01 12:15:11 +01:00
Chris Bracken c9442bb8a2 Unset GREP_OPTIONS when extracting processor count
If GREP_OPTIONS includes -n or --line-number, matches will be emitted
with a line number following the filename. Unset GREP_OPTIONS to ensure
we're getting expected output.

BUG=
R=johnmccutchan@google.com

Review-Url: https://codereview.chromium.org/2721953004 .
2017-02-28 16:00:32 -08:00
John McCutchan 6cb83f037e Address comments from Matthias on previous CL
original CL: https://codereview.chromium.org/2692803006/

R=hausner@google.com

Review-Url: https://codereview.chromium.org/2720723006 .
2017-02-28 14:02:32 -08:00
Vyacheslav Egorov 9fd4823e9d VM: Fix simdbc and darkp builds.
- When generating app-aot snapshot we are currently running Kernel isolate
in the precompiler mode, which means we can't have field guards enabled.

- DBC does not support field guards so flags must be correctly initialized.

BUG=
TBR=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2720893004 .
2017-02-28 22:20:44 +01:00
Vyacheslav Egorov a9a756df8e VM: Allow configuring use_field_guards on the per-isolate basis and include it into snapshot features.
We have tests that disable it but we train app-jit snapshot for Kernel with field guards enabled so
we need to make sure that Kernel isolate runs with correct settings matching the settings at the time
when app-jit snapshot was created.

BUG=
R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2715213008 .
2017-02-28 21:17:17 +01:00
Vyacheslav Egorov a5e1f89583 VM: Fix an app-jit related shutdown race.
IsolateData contains AppSnapshot which might own some HeapPage-s, so we can't
destroy IsolateData in the Dart_IsolateShutdownCallback, because some thread
running in the isolate (e.g. background compiler) might still touch
thoses pages or objects they host.

We need to delay destruction of AppSnapshot until after the isolate shutdown.

Current API does not allow that, so we introduce a new isolate lifecycle
callback - Dart_IsolateCleanupCallback, which is invoked at the end of the
isolote lifecycle when things like background compiler have been stopped
and no Dart code is supposed to run.

BUG=
R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2720723005 .
2017-02-28 21:10:04 +01:00
Vyacheslav Egorov ff9c17504a VM: Make Dart::FeaturesString respect isolate flags controlling asserts and type checks.
Before it simply looked at FLAG_enable_{asserts/type_checks}.

We allow disabling or enabling type checks / asserts for newly created isolates
through Dart_IsolateFlags even when they are enabled globally through
FLAG_enable_{asserts/type_checks} flags.

This change allows isolates to use app-jit snapshots trained with type checks /
asserts disabled as long as isolate itself has type check and asserts disabled,
independent of whether FLAG_enable_{asserts/type_checks} is set globally or not.

Additionally disable type checks and asserts on Kernel isolate even if flags
FLAG_enable_{asserts/type_checks} are set.

This change allows to train Kernel app-jit snapshot once and use it both for

$ dart --dfe=...

and for

$ dart --checked --dfe=...

configurations.

BUG=
R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2720123004 .
2017-02-28 21:05:29 +01:00
John McCutchan 7e55c12e03 Add SILENT_OBSERVATORY environment variable to Observatory web server
BUG=
R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2715423002 .
2017-02-28 07:33:33 -08:00
Kevin Millikin f31b6d5e2c Reland "Track the 'awaiter return' call stack..."
Original CL: https://codereview.chromium.org/2692803006/

Original commit message:
Tracking the awaiter return call stack:

- [x] Each async function closure now knows who is awaiting on their
return. This is effectively the asynchronous equivalent of the 'frame pointer'.
- [x] Each async* function closure now knows how is listening on their
stream. This is effectively the asynchronous equivalent of the 'frame pointer'.

Detecting uncaught exceptions in async functions:

- [x] Code object keeps a map from :await_jump_var to token position
- [x] Exception Handlers keep track if they are generated (as part of compilation) or directly from user code
- [x] Debugger maps :await_jump_var to a specific try index

R=johnmccutchan@google.com

Review-Url: https://codereview.chromium.org/2725623003 .
2017-02-28 16:13:41 +01:00
Kevin Millikin a0965a641f Revert "Track the 'awaiter return' call stack..."
Revert a pair of commits that cause failure of the Kernel continuation
transformer:

  cba7e3e79a
  4fe4f177de

R=kustermann@google.com

Review-Url: https://codereview.chromium.org/2718353002 .
2017-02-28 12:46:31 +01:00
Ryan Macnak c4f6728027 gen_snapshot:
- Consistently accept hypens or underscores in option names.
 - Replace --snapshot_kind=none with --dependencies-only, since the former is ambiguous as to whether an existing core snapshot needs to be read. Important when using an embedder-specific dart: library.
 - Don't try to canonicalize file paths for the snapshot pieces since this fails if there isn't already a file on disk.

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

Review-Url: https://codereview.chromium.org/2707383007 .
2017-02-27 15:18:27 -08:00
Regis Crelier 269aaf0305 Properly handle instantiator when allocating or cloning closure instance.
This should fix the vm-kernel bots.

Review-Url: https://codereview.chromium.org/2723643002 .
2017-02-27 14:51:27 -08:00
John McCutchan 4fe4f177de Fix build failures in precompiled runtime
BUG=

Review-Url: https://codereview.chromium.org/2719083004 .
2017-02-27 14:36:19 -08:00
John McCutchan cba7e3e79a Track the 'awaiter return' call stack use it to detect uncaught exceptions in async functions
Tracking the awaiter return call stack:

- [x] Each async function closure now knows who is awaiting on their
return. This is effectively the asynchronous equivalent of the 'frame pointer'.
- [x] Each async* function closure now knows how is listening on their
stream. This is effectively the asynchronous equivalent of the 'frame pointer'.

Detecting uncaught exceptions in async functions:

- [x] Code object keeps a map from :await_jump_var to token position
- [x] Exception Handlers keep track if they are generated (as part of compilation) or directly from user code
- [x] Debugger maps :await_jump_var to a specific try index

Fixes #27242

R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2692803006 .
2017-02-27 14:16:15 -08:00
Florian Schneider cf5a62efc5 Print user-friendly name when parsing invalid redirecting constructor.
Addressing comments on https://codereview.chromium.org/2710363002/

R=hausner@google.com

Review-Url: https://codereview.chromium.org/2715243005 .
2017-02-27 12:20:39 -08:00
Regis Crelier 3633c5bd5e Rename Closure instance field type_arguments_ to instantiator_.
Simplify handling of closures as deferred objects.
The name "type_arguments_" is confusing, because class Closure is not generic.
Class Closure was forcefully made (kinda) generic by setting its
type_arguments_field_offset_in_words_ field to a valid value, so that the
type_arguments_ field in closure instances could be accessed similarly as in
generic instances. With generic functions, closures will potentially have more
than one instantiator and the name type_arguments_ becomes nonsensical.

R=johnmccutchan@google.com

Review-Url: https://codereview.chromium.org/2719603002 .
2017-02-27 11:14:04 -08:00
Ben Konyi fe81f73188 Updated enable-malloc-hooks flag to be disabled by default in debug mode.
BUG=
R=zra@google.com

Review-Url: https://codereview.chromium.org/2718963004 .
2017-02-27 09:12:37 -08:00
Vyacheslav Egorov 1c7cb7c5e9 VM: remove service_object_patch.dart and all associated code.
This deletion has several reasons:

- This code is broken and refers to non-existant private parts of dart:io
(e.g. `_NativeSocket._sockets`, `_ProcessImpl._processes`, `_RandomAccessFile._files`).

- This code is not reachable through the service protocol. `_serviceObjectHandler` uses
`paths` to fetch the right handler from `_servicePathMap` but caller `ServiceGetIOHandler`
always passes empty paths.

- The only test that was attempting to test some of this code through mirrors (sic!)
has been disabled since January 2015.

After deletion all tests continue to pass meaning that nobody really relies on this
broken code in any way.

BUG=https://github.com/dart-lang/sdk/issues/28882
R=johnmccutchan@google.com

Review-Url: https://codereview.chromium.org/2715253002 .
2017-02-27 16:08:16 +01:00
Erik Corry c0404e4f23 Propagate this-specialization to regular (megamorphic) calls
R=vegorov@google.com
BUG=

Review-Url: https://codereview.chromium.org/2716593002 .
2017-02-27 13:28:54 +01:00
Peter von der Ahé ab45caba0f Fix errors in VM patch files.
R=vegorov@google.com

Review-Url: https://codereview.chromium.org/2717573003 .
2017-02-27 08:55:17 +01:00
Ben Konyi 3a1b7bdfca Fixed issue where MallocHooks tests would try and re-initialize the hooks and ended up hitting an assert in debug mode.
BUG=
R=johnmccutchan@google.com, zra@google.com

Review-Url: https://codereview.chromium.org/2718723003 .
2017-02-24 14:58:42 -08:00
Ben Konyi 68a102cab2 Fixed tests not having MallocHooks initialized for tests in release mode.
Revert "Revert "Fixed issue in MallocHooks where a MallocHookScope was accidentally removed during a merge, causing a deadlock in the hooks. Also turned off stack trace collection in a test that was timing out as a result of the stack trace collection.""

This reverts commit 1a5b555aa9.

BUG=
R=zra@google.com

Review-Url: https://codereview.chromium.org/2711353003 .
2017-02-24 13:56:06 -08:00