- Move some misplaced entry points from the vm list to the standalone embedder list.
- Add missing libdart_with_precompiler to GN.
- Add ability to reference the root library in treeshaking roots without knowing its URI (as ::).
R=zra@google.com
Review-Url: https://codereview.chromium.org/2786483002 .
Before: Canonical names contained pointers to the corresponding Kernel
tree which assumed that the whole tree was in memory whenever the
canonical names were.
Now: Canonical names do not contain these pointers. They were only
really used to perform name-based lookup in the VM's heap so the
canonical name itself is enough.
If we later find that we need to get from a canonical name to its
Kernel tree we can add an offset in the binary (for instance) to the
canonical name or in a separate mapping on the side.
BUG=
R=asgerf@google.com, vegorov@google.com
Review-Url: https://codereview.chromium.org/2781893004 .
- [x] Include the (non-empty) awaiter stack trace in every `getStack` RPC.
- [x] Append the causal stack trace to the final frame of the awaiter stack trace.
- [x] Unit test for awaiter stack trace.
BUG=
R=rmacnak@google.com
Review-Url: https://codereview.chromium.org/2782703002 .
The finalizer sends the "close" message to the EventHandler for the
file descriptor in the _NativeSocket's native field. To avoid races and
spurious messages, this CL stores a pointer to a wrapper object in the
native field instead of the file descriptor. All messsages about the
_NativeSocket sent to the EventHandler use the wrapper object instead of
the file descriptor. When the EventHandler closes the file, the file
descriptor in the wrapper object is set to -1 so that the finalizer will
instead do nothing.
On Windows, there is another level of indirection since the OS HANDLEs
were already wrapped in various kinds of Handle objects. As an additional
complication, ClientSocket close on Windows is asynchronous, so the
EventHandler may shutdown before all of the ClientSocket Handles can be
destroyed.
related #27898, #28081R=johnmccutchan@google.com
Review-Url: https://codereview.chromium.org/2760293002 .
For compiling the platform libraries separately and for hot reload, we
will not link canonical names of Kernel libraries, classes, and
members to their Kernel definitions. Those definitions will not be
persistent.
As a first step, change name-based lookup of libraries and classes to
be be based on the canonical name instead of the Kernel definition.
BUG=
R=jensj@google.com, kustermann@google.com
Committed: a15b8c49ea
Review-Url: https://codereview.chromium.org/2762213002 .
Currently Fasta translates cascade of indexed assignments into a cascade of
let-statements.
For example code like
```dart
indices
..[0] = 0
..[_schemeEndIndex] = start - 1
..[_hostStartIndex] = start - 1
..[_notSimpleIndex] = start - 1
..[_portStartIndex] = start
..[_pathStartIndex] = start
..[_queryStartIndex] = end
..[_fragmentStartIndex] = end;
```
gets translated to
```
let final dynamic #t826 = indices in
let final dynamic #t827 = #t826.[]=(0, 0) in
let final dynamic #t828 = #t826.[]=(core::_schemeEndIndex, start.-(1)) in
let final dynamic #t829 = #t826.[]=(core::_hostStartIndex, start.-(1)) in
let final dynamic #t830 = #t826.[]=(core::_notSimpleIndex, start.-(1)) in
let final dynamic #t831 = #t826.[]=(core::_portStartIndex, start) in
let final dynamic #t832 = #t826.[]=(core::_pathStartIndex, start) in
let final dynamic #t833 = #t826.[]=(core::_queryStartIndex, end) in
let final dynamic #t834 = #t826.[]=(core::_fragmentStartIndex, end) in
#t826;
```
This later becomes in IL (on the example of `#t826.[]=(0, 0)`):
```
t0 <- InstanceCall:120( []=, t0, t0, t0)
StoreLocal(:var1 @-19, t0)
```
After SSA construction if locals liveness analysis is disabled
(`--no-prune-dead-locals`) we get essentially redundant phis constructed for
temporary let-variables which actually use result of the instance call:
```
v25 <- InstanceCall:120( []=, v22, v24, v24)
...
v629 <- phi(v636, v25)
```
These phis are redundant because their values can never be observed by the
program because they correspond to dead stores. In fact these phis only have
environment uses.
However subsequent optimization passes assume that result of a `v.[]=(...)`
invocation can never be used and replace `v.[]=(...)` with IL sequences that
don't actually produce any value - leading to malformed graphs where phis
refer to instructions outside of the graph.
To workaround the issue we explicitly drop the actual result of `v.[]=(...)`
and push a null-value to be used instead.
Fixes https://github.com/dart-lang/sdk/issues/29135R=kmillikin@google.com, kustermann@google.com
Review-Url: https://codereview.chromium.org/2769313004 .
For compiling the platform libraries separately and for hot reload, we
will not link canonical names of Kernel libraries, classes, and
members to their Kernel definitions. Those definitions will not be
persistent.
As a first step, change name-based lookup of libraries and classes to
be be based on the canonical name instead of the Kernel definition.
BUG=
R=kustermann@google.com
Review-Url: https://codereview.chromium.org/2762213002 .
Don't create getters for uninitialized static fields.
This fixes two assert hits that was hit when running service tests in debug mode via kernel. These can thus now be enabled.
BUG=
R=kmillikin@google.com
Review-Url: https://codereview.chromium.org/2771443003 .