Minimize the number of dependencies of compiler-related files.
This is needed to remove whole .cc/.h files from a compiler-less VM binary which
can be used for running precompiled code.
* removed dependencies of object.cc on flow_graph_compiler.h and flow_graph_builder.h
* removed unnecessary includes from object.h
BUG=
R=srdjan@google.com
Review URL: https://codereview.chromium.org/1411873005 .
- API breakage: Dart_IsolateBlocked, Dart_IsolateUnblocked -> Dart_ThreadDisableProfiling, Dart_ThreadEnableProfiling.
- Remove IsolateProfilerData.
- Move thread at blocking call count from isolate to thread.
- Always interrupt threads unless they are blocked.
- We can no longer count "idle" ticks.
- Only record sample if thread is the current mutator of an isolate.
- Refactor ThreadInterrupterCallback to ensure that Thread* is valid.
Threads are only ever sent signals if ThreadInterruptsEnabled is true. Which is controlled by two functions:
void DisableThreadInterrupts();
void EnableThreadInterrupts();
R=asiva@google.com, iposva@google.com
Review URL: https://codereview.chromium.org/1423473004 .
- When a process exits on Windows, Windows closes all handles
- Our mutexes use a handle to a semaphore for locking
- If our TLS destructors need to take a lock during thread exit (but after process has started to shutdown) we will deadlock waiting on a handle that's been closed.
This works around the problem by not running tls destructors when we are exiting the process.
R=zra@google.com
Review URL: https://codereview.chromium.org/1409723007 .
- When a process exits on Windows, Windows closes all handles
- Our mutexes use a handle to a semaphore for locking
- If our TLS destructors need to take a lock during thread exit (but after process has started to shutdown) we will deadlock waiting on a handle that's been closed.
This works around the problem by not running tls destructors when we are exiting the process.
R=zra@google.com
Review URL: https://codereview.chromium.org/1416063005 .
For dart2js:
Uri.pathSegments.easy: +792%
Uri.pathSegments.hard.escaped: +8%
Uri.pathSegments.hard.normalized: +152%
For VM:
Uri.pathSegments.easy: +117%
Uri.pathSegments.hard.escaped: -8%
Uri.pathSegments.hard.normalized: +35%
We could probably get a little more in the browser if we make the check a patched '_platformUriEncode' method, but the 'encoding' parameter makes it impossible to remove _uriEncode completely.
R=lrn@google.com
Review URL: https://codereview.chromium.org/1411413008 .
Moving the construction of ?? into the parser using LetNode, so that the await-transformations are properly applied.
a ?? b becomes { temp = a; temp !== null ? temp : b; }
a ??= b becomes { temp = a; temp != null ? temp : a = b; }
BUG=issue #24392R=hausner@google.com
Review URL: https://codereview.chromium.org/1417733007 .
also sorted members per analyzer style (?)
figured it would be easier to work on as a 0.5k file vs ~15k resolver.dart :)
For now I left TypeProvider where it was. Not sure if it should move here or into its own file as well.
For backwards compat, all of the types are re-exported from resolver.dart.
R=brianwilkerson@google.com
Review URL: https://codereview.chromium.org/1407923009 .
Basic YAML map merging suitable for merging a default map with an overriding one.
The semantics favor the overrider with a twist to support a short-hand for lists that stand-in for maps of scalars to booleans. Specifically, lint rules can be enumerated as a list or as a map. To make this work, lists can be "promoted" to maps. In particular, if
linter:
rules:
- camel_case_types
- one_member_abstracts
is merged with
linter:
rules:
one_member_abstracts: false
always_specify_return_types: true
the right thing is done to get us to:
linter:
rules:
camel_case_types: true
one_member_abstracts: false
always_specify_return_types: true
R=brianwilkerson@google.com, johnmccutchan@google.com
Review URL: https://codereview.chromium.org/1425393002 .