Commit Graph

18413 Commits

Author SHA1 Message Date
Ben Konyi c9ab5c4681 [ VM / Service ] Added TimelineStreamSubscriptionsChanged event
The `TimelineStreamSubscriptionsChanged` event is sent when
`setVMTimelineFlags` is invoked, notifying `Timeline` subscribers that
the set of recorded timeline streams has changed.

Fixes https://github.com/dart-lang/sdk/issues/41822

Change-Id: Ic1545eefea8cf3deeefba97bd1ea2695d1c35016
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147681
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2020-05-12 19:22:41 +00:00
Ryan Macnak 16253c0a54 [vm] Fix LSAN when used without ASAN.
Mostly interesting on Mac, where ASAN does not include LSAN.

Bug: https://github.com/dart-lang/sdk/issues/41811
Change-Id: Icbbe57946a6d3b3406a9e3a6541b6c4958cbfa91
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147685
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2020-05-12 17:38:19 +00:00
Aske Simon Christensen 14103a366d [vm] Add _allocate and _setAt methods to _TwoByteString.
Also base these and the corresponding methods in _OneByteString on
functions in dart:_internal, so they can be used in other patches.

Change-Id: Ibced31758db2959c111a01cdaa46df2971ae4a6c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146784
Reviewed-by: Martin Kustermann <kustermann@google.com>
2020-05-12 17:33:50 +00:00
Tess Strickland db51ed7507 [vm] Relax AssertAssignable to allow dst_type to be non-constant.
Previously, AssertAssignable instructions could only be created with a
compile-time AbstractType value for dst_type. Relax this so that
AssertAssignable instructions can be created with a possibly
non-constant Value instead.

This is only an IL-level change for the instruction. Code generation for
AssertAssignable still requires the dst_type Value to be bound to a
constant and is otherwise unchanged from before, thus this should have
no impact on size or speed of generated code. (Generating the
non-constant case will be done in follow-up work.)

Bug: https://github.com/dart-lang/sdk/issues/40813

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-linux-product-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-release-simarm-try,vm-kernel-precomp-linux-release-simarm_x64-try,vm-kernel-precomp-linux-release-simarm64-try,vm-dartkb-linux-release-simarm64-try,vm-dartkb-linux-release-x64-try
Bug: https://github.com/dart-lang/sdk/issues/40813
Change-Id: I1f984039d8c2695c66161a69a3d80cfbe7110f19
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146801
Commit-Queue: Tess Strickland <sstrickl@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2020-05-12 11:22:19 +00:00
Tess Strickland 245a574301 [vm] Make the ELF static symbol table a superset of the dynamic one.
Only the case for unstripped snapshots and debugging information.
Stripped snapshots still have no static symbol table, only the
dynamic one.

Fixes: https://github.com/dart-lang/sdk/issues/41783

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-linux-product-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-win-release-x64-try
Change-Id: Ibd82334597d34267a3b9e45a673d23c3f9e3fcb0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147182
Commit-Queue: Tess Strickland <sstrickl@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2020-05-12 07:21:48 +00:00
Ben Konyi 8e3b9d34be [ VM / Service ] Remove package:path dependency from breakpoint_non_debuggable_library_test
Fixes https://github.com/dart-lang/sdk/issues/41785

Change-Id: Iac4e9c8a348e13d1b38f5df9c65a690b403b1e7c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147700
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2020-05-12 03:02:21 +00:00
Zichang Guo 9a60982089 [dart:io] serialize UnmodifiableListView to Uint8List for file write
Bug: https://github.com/dart-lang/sdk/issues/41029
Change-Id: I5902f01a22787922439f0918b6e845eb004b8984
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139881
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Zichang Guo <zichangguo@google.com>
2020-05-12 00:19:01 +00:00
Vyacheslav Egorov 2497606fed [vm/compiler] Avoid redundant spilling of SIMD values.
There was a code in the register allocator that recognized whether
destination is a spill slot or not by checking if it is one of
different location types. By accident QuadSpillSlot was missing
from that list - and as a result we were emitting redundant moves
when connecting split siblings after register allocation.

Change the code to just ask parent live which spill slot it was assigned
and use that to drive decisions.

https://github.com/dart-lang/sdk/issues/41805

Change-Id: I73e208acd0bf86dceeaad970b8e5cbcb9c3f8eaa
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147550
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2020-05-11 20:24:57 +00:00
Vyacheslav Egorov 2018436995 [vm/compiler] Include linear scan tracing code in release builds
Additionally make it possible to filter the output of this tracing
using --print-flow-graph-filter=...

Expose should_filter() setting through CompilerState - to avoid
plumbing FlowGraph or Function through various methods that don't
already have access to either of these two.

Change-Id: Ia1b8bcff5702e869db23ea4407191741662b2417
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147544
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2020-05-11 20:24:49 +00:00
Tess Strickland 7d253a5826 [vm/compiler] Allow SameAsFirstInput() in LocationSummary::set_out().
Originally, the assert here required the location be a machine register,
invalid, or a pair location if always_calls() was true, which meant
that SameAsFirstInput() could not be used.

Extend the assert to allow SameAsFirstInput(), but only if the location
of the first input is a machine register, invalid, or a pair location.
Also make sure any further changes to the first input remain consistent
with this expectation.

Fixes: https://github.com/dart-lang/sdk/issues/32787

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-debug-simarm_x64-try
Change-Id: If43eb5399283d23f62a502edb0a9ce9c82813b3b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147101
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Tess Strickland <sstrickl@google.com>
2020-05-11 09:09:07 +00:00
Tess Strickland a6d06b59ec Reland "[vm] Mark snapshots that were compiled directly to ELF.
Since the virtual addresses in ELF snapshots are the same as in
separately saved debugging information, print the virtual address in
non-symbolic frames again when running from a snapshot compiled directly
to ELF."

Storing the relocated address as an extra field in the Image header,
which requires increasing the Image header size on 64-bit platforms,
means Image pages cannot be used reliably as HeapPages as objects no
longer start after kMaxObjectAlignment bytes.

Instead, we return to an older design that just uses the lowest bit
in the BSS offset to store whether the instructions in an Image were
compiled directly to ELF.

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-linux-product-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-win-release-x64-try,vm-kernel-precomp-linux-release-simarm_x64-try,vm-precomp-ffi-qemu-linux-release-arm-try
Change-Id: I3819b0dc2719d69f5e8764ca8be8c6ae7171a7bc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146560
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Tess Strickland <sstrickl@google.com>
2020-05-11 08:41:17 +00:00
Tess Strickland 9e14e7da2a [vm] Add correct lower bound for DWARF information in ELF snapshots.
When generating DWARF for assembly snapshots, we use a lower bound
of the start of the isolate instructions section. Use the same bound
when generating DWARF for ELF snapshots as well.

Also avoid generating rows in the line number program for address 0.

Fixes https://github.com/dart-lang/sdk/issues/41756.

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-linux-product-x64-try,vm-kernel-precomp-linux-debug-x64-try
Change-Id: I3d17e09ff8af3ba6fc70dcd6859d9b298e941ecf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146584
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2020-05-11 08:41:17 +00:00
Martin Kustermann 518f097266 [vm] Make metrics API expose correct heap metrics in PRODUCT mode
See b/152430908

Change-Id: I89524489ec9868bf5fa40559292e4f82b352cfe3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147362
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2020-05-09 08:27:48 +00:00
Alexander Aprelev 2319132ff5 [gardening] Skip dds_log_history_size_gigantic_test on windows bots.
Opened dartbug.com/41825 to track it being too slow.

Change-Id: I37b76de494fbbf309ec0e6106bd7ebb2771f7cb1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147401
Reviewed-by: Alexander Aprelev <aam@google.com>
2020-05-09 03:45:45 +00:00
Alexander Aprelev 017b1c46f6 [gardening] Tweak ring_gc_test, ring_gc_sendAndExit_test so they pass on simarm_x64.
Raised dartbug.com/41824 to track test failure.

Change-Id: Ie5596a7d66adc4e6b55b7dd6fe0009da396740e7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147400
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2020-05-09 02:13:26 +00:00
Ben Konyi 755a315dc5 [ package:dds ] Added support for log history in DDS
Added the following RPCs to the DDS protocol:
- getLogHistoryLength
- setLogHistoryLength

Historical logs will be sent to clients when they connect and subscribe
to the Logging stream for the first time. Current default log history
length is 10,000 messages to support applications with chatty logging at
startup.

Change-Id: Ic6cd9c58673fbb7179b6ac0f1f6581cb8ada03fa
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146444
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2020-05-08 23:30:36 +00:00
Alexander Markov 4029d01d70 [vm/nnbd] NNBD-related fixes for bytecode mode
* AssertAssignable should not be generated for top types according to
  IsTopTypeForSubtyping().

* Arguments descriptor should be passed when calling field initializer
  from InitLateInstanceField/InitLateFinalInstanceField stubs.
  If interpreter is enabled, InterpretCall stub expects to find
  arguments descriptor in a register. Also, lazy compilation stub
  may save arguments descriptor in a slot visited by GC, so arguments
  descriptor register should contain a GC-safe value.

Fixes https://github.com/dart-lang/sdk/issues/41807

Change-Id: Ia33ed1bc57007d674799fb4453c8ab4841037211
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147383
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2020-05-08 22:10:06 +00:00
Alexander Aprelev e5dd3933b4 [gardening] Speed up transferable_test by skipping elements comparison.
With element-by-element comparison the test seems to be too slow for reload, kb bots.

Change-Id: I68d923f78ea40bd13a10582c7cc6e456a1e9b13d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147384
Reviewed-by: Alexander Aprelev <aam@google.com>
2020-05-08 20:21:55 +00:00
Ryan Macnak 2a14a62112 Reland "[vm, gc] Set the scavenger's forwarding bit to equal to the pointer tag bit."
Makes some conversions no-ops.

Originally reverted along with other changes for a g3 roll; re-landing with no changes.

Change-Id: Ia267d1f0104a77866432d7172611b91dae9075ef
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147320
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2020-05-08 19:46:06 +00:00
Ben Konyi 5ccbe533ab [ VM / dartdev ] Ignore VM flags in dartdev VM instance
In order to reduce confusion, if a VM instance detects that it will be
running a dartdev snapshot it will ignore all VM flags and print a
warning message to stderr informing users that the flags are being
ignored and that they should be passed immediately after the 'dart run'
command. This will prevent the dartdev snapshot from being run with
incompatible flags in addition to preventing users from accidentally
setting flags for the dartdev VM when they meant to set those flags for
the target process.

As usual, passing --disable-dart-dev will allow for the user to bypass
this behavior and run their dart program directly.

Fixes https://github.com/dart-lang/sdk/issues/41590

Change-Id: I7d5dc3d4ddae8be99994620b5b2c2e4cc492ae5e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146984
Reviewed-by: Siva Annamalai <asiva@google.com>
2020-05-08 19:22:56 +00:00
Alexander Aprelev 6b571998d7 [gardening] Fix transferable_test - remove timing assumptions.
Attempts to expect runtime performances lead to flakiness.

Fixes dartbug.com/37520

Change-Id: I6bc548f523b2c2453c7fa90498ebaf4f91ec9f71
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147380
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2020-05-08 18:54:56 +00:00
Alexander Aprelev b2e300bb7b [vm/isolates] Fix race in ring_gc_* tests.
Some isolate might get Run message and start sending data(Tree) to a receiver before that receiver got Run message.

Fixes dartbug.com/41813

Change-Id: Ifdf1a44d3a2f955f5919d3fd63bf97e9b3317388
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147329
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2020-05-08 18:30:56 +00:00
Ryan Macnak 5241586246 [vm, gc] Rename HeapPage to OldPage for symmetry.
Change-Id: I282eaf894fad17a731dbfc76873468b04117cebd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147324
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2020-05-08 18:28:06 +00:00
Regis Crelier eae248cc41 [VM/compiler] Emit a throw NoSuchMethodError for bad arity rather than aborting compilation.
The bad arity maybe detected after an isolate reload or when using strong mode with a mix of opted in and opted out libraries.
The thrown NoSuchMethodError contains enough information to be useful, but does not mirror the complete invocation (e.g. arguments).

This CL does not fix https://github.com/dart-lang/sdk/issues/37517 where the target is missing after a reload (not just bad arity).

The VM implementation of NoSuchMethodError is cleaned up, but the deprecated constructor 'NoSuchMethodError(...)' is not yet removed, since it is still documented.

Change-Id: I0306971c59cb510d21cb1b1acc3545c8817dfea7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146986
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2020-05-08 18:08:26 +00:00
Ryan Macnak b6ef01ddaf [vm] Fix -Wno-conversion-null errors.
Change-Id: Id4f506f168a40682a6f9176ab6dc8ac4c110b9ed
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147326
Reviewed-by: Régis Crelier <regis@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2020-05-08 17:08:49 +00:00
Zachary Anderson 18735d83df [dart:io, windwos] Try a shorter temp directory name first
Windows paths are limited to 260 characters including the null
terminator in most cases. This makes characters in paths
a precious commodity.

Currently creating a temporary directory in Dart will append
a UUID to the user-provided prefix. UUIDs consume 36
characters of a path. If a temporary directory is created
inside of another temporary directory, this adds up to 72
characters or about 28% of the available real estate.

This change first attempts to use a shorter suffix generated
from a random uint32_t using Crypto::GetRandomBytes. If
that fails, then it falls back on using the UUID.

Change-Id: I15a413746316028b39b6ff915b1b2b19cbf62a5e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147341
Commit-Queue: Zach Anderson <zra@google.com>
Reviewed-by: Zichang Guo <zichangguo@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2020-05-08 16:47:09 +00:00
Alexander Markov dd2d040ccb [vm] Cleanup flags which disable argument type checks and strong mode types
The following options are removed:
--use_strong_mode_types
--experimental_unsafe_mode_use_at_your_own_risk

The following flags and predicates are removed:

Dart_IsolateFlags::unsafe_trust_strong_mode_types
Isolate::argument_type_checks()
Isolate::can_use_strong_mode_types()
Isolate::should_emit_strong_mode_checks()

Also, everything depending on these flags is cleaned up.

Change-Id: I9328009ad5a42ea2173842386d612c465e3ebec1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147325
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2020-05-08 15:53:09 +00:00
asiva 6df6dbeb6e [Tests] Skip valid_source_locations_test for ia32 and simarm* configurations
This tests takes too long on these configurations, timesout most of the
time and causes infra issues.

Change-Id: Iddcb61997df3dea5add0da716dca6bfc930f075e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147340
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Siva Annamalai <asiva@google.com>
2020-05-08 00:28:41 +00:00
Alexander Aprelev 94c2c7c64c [vm/isolates] Skip dart/isolates/ring_gc_* tests.
Opened dartbug.com/41813 to track the fix.

Change-Id: Ic026ffeee47ad9a283ae6314572a15a42b80a249
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147343
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2020-05-08 00:26:55 +00:00
asiva 03ce33f80c [BUILD] - Initial CL to unfork the NNBD Dart SDK
- Flips the flag from --nnbd to --no-nnbd so that by default it builds
  the NNBD version
- using the --no-nnbd flag results in the SDK being built in a
  directory which has the 'Legacy' suffix added to it
  (e.g: out/DebugX64Legacy)
- the '--enable-experiment=non-nullable' flag still needs to be passed
  in during execution so that CFE runs in that mode. This is different
  from the 'null_safety' flag

Change-Id: I729630a7bd36ea7ae38134f9285b44e93c283c68
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/138902
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2020-05-07 21:12:47 +00:00
Ryan Macnak 2707880f1b [vm] Fix various UBSan failures.
Bug: https://github.com/dart-lang/sdk/issues/39427
Change-Id: I74e0eee623d88005fb2893d03e284a87daa09260
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146696
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2020-05-07 19:40:18 +00:00
Alexander Aprelev 8c79102889 [vm/isolates] Move saved_initial_field_table to isolate group.
This improves performance of spawn isolate since it drops a need to lock isolate group when spawning new isolate.

Change-Id: I867c13c808a3eb356f3d53323bb8aef06541019e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147046
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2020-05-07 19:13:28 +00:00
Ryan Macnak 9e5dbadc73 [vm] Use consistent signatures for native call wrappers and native function symbolizers.
Bug: https://github.com/dart-lang/sdk/issues/39427
Change-Id: I0d52d935c15f4d01d56e5e99bc4b83b31678a6ad
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146940
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2020-05-07 16:16:08 +00:00
Vyacheslav Egorov 11b9913064 [vm] Fix vm/dart/run_appended_aot_snapshot_test which uses dart2native internals.
It was broken by changes in d959f4290e

TBR=sstrickl@google.com

Change-Id: Ib70e88317b37609c8139f00154707baeeae7b870
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147180
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2020-05-07 14:24:40 +00:00
Martin Kustermann 9e76548a2c [gardening] Skip isolate tests on android, make them run less in simulator mode
Change-Id: Idaa75301332222a16af3c8d312de57e39074f362
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147121
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2020-05-07 13:11:57 +00:00
Vyacheslav Egorov d959f4290e [vm/compiler] Disambiguate Code names when emitting instruction sizes info.
Previously the output used scrubbed qualified names which hides some
of the information and causes names of various synthetic functions
collide. We change it to use internal qualified names instead and add
additional information for disambiguation:

- For functions this means adding a prefix for various synthetic
methods;
- For anonymous closures we add their token position;
- For types we prefix type parameters with their owner's name.

We also add a unit test covering parsing of
--print-instructions-sizes-to output.

As part of adding a test dart2native was changed to support passing
extra arguments to gen_snapshot binary.

Fixes https://github.com/dart-lang/sdk/issues/41137

Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-linux-release-try,pkg-win-release-try,pkg-mac-release-try
Change-Id: I299ab0fb5993c8af9b51246483608d1e65970d67
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146581
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Tess Strickland <sstrickl@google.com>
2020-05-07 12:39:27 +00:00
Alexander Aprelev 325cd080dd [vm/isolates] Fix race in isolate field table cloning when spawning isolates in aot.
Goes toward fixing dartbug.com/41791

Change-Id: I8b7cc10fc265e91c7313f5392173bcb971205dcc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146960
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2020-05-06 21:02:33 +00:00
Ryan Macnak 147f0e3d94 [vm] Delay allocating the ObjectIdRing until the first service request or response.
Avoids GC overhead when the VM service is not in use.

Change-Id: Ic2e752c17fdd01045e30dd62e16f20896a9fc64e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146440
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2020-05-06 19:19:52 +00:00
Ryan Macnak 9a4b464be0 [vm] Prevent try index from clobbering yield index when encoding pc descriptors.
Bug: https://github.com/dart-lang/sdk/issues/39427
Change-Id: I81beb5b269857e486a7374968fe8ac78d72bb16b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146695
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2020-05-06 17:58:22 +00:00
Martin Kustermann 8d1c4c555c [vm/concurrency] Add various tests for lightweight AOT isolates
To enable our tests to spawn a new isolate in a new group, this CL
adds a `{bool newIsolateGroup}` parameter to the internal
`Isolate._spawnFunction` native and moves that native to
`dart:_internal`, thereby allowing runtime/tests/vm/dart/* to access it.

It also adds various tests for lightweight AOT isolates, exercising
GC, communication, spawning, ...

Issue https://github.com/dart-lang/sdk/issues/36097

Change-Id: I3940c30fb43d2475c58e6be78507da74ce64b60d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/145941
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2020-05-06 12:37:52 +00:00
David Morgan cc29a4e6e4 Upgrade package:path from 1.7.0 (1.7.0 in pubpsec.yaml) to 4b8c83cd5ccfcc8101acd2940ffb5a44d24ec57e (1.7.0 in pubspec.yaml).
R=nbosch@google.com

Change-Id: I389146c4440b35462cc3277eba491aeadb3c0435
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/144722
Commit-Queue: David Morgan <davidmorgan@google.com>
Reviewed-by: Nate Bosch <nbosch@google.com>
2020-05-06 10:38:55 +00:00
Alexander Markov 16fb650d25 [vm/nnbd] Read null-safety mode from snapshots with code
Snapshots which contain code are compiled with a particular null-safety
mode and it is not possible to change their mode at run time.
When running from such snapshot, VM now reads null-safety mode from
the snapshot if it is not specified at the command line.
This avoids the need for embedders to pass null-safety flag
used during snapshot generation also to the runtime, similarly to
other VM flags listed in VM_GLOBAL_FLAG_LIST (such as use_bare_instructions).

In addition, error for incompatibility of kernel libraries with
current null-safety mode is changed from ReportError (which attempts
to throw an exception) to a FATAL, because throwing an exception
crashes when bootstrapping from a kernel file.

Change-Id: I93a791825c25c2da4e33634f1c71736c17928fea
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146460
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2020-05-05 17:25:07 +00:00
Martin Kustermann c01f9fb8a9 [vm/concurrency] Make an isolate group use a custom ThreadPool with maximum size
Our TLAB sizes and maximum new space size constrain the number of
parallel mutator threads we can have. Having too many mutator threads
would cause constant races between threads to acquire TLABs.

In reality we should constrain the number of threads to be at most the
number of cores, since at most that many threads can run in parallel
(i.e. at the same time).

This CL extends the TreadPool implementation to be constrained by a
maximum size. Furthermore it makes each isolate group's have it's own
pool with constrained size and schedule all group member
mutator / message handler tasks on that pool.

Issue https://github.com/dart-lang/sdk/issues/36097

Change-Id: I095c749adad827ab892f33713a32be594d7606d1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/145382
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2020-05-05 12:08:43 +00:00
Ben Konyi 9cfe19d38b [ VM / Service ] Remove _spawnUri RPC from VM service
This code doesn't appear to be used anywhere in the Dart SDK or Flutter.

Fixes https://github.com/dart-lang/sdk/issues/41751

Change-Id: Iad8537f3187caa7b2304ee2ec2aaaa8b6ba2b35c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146480
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2020-05-05 00:47:37 +00:00
Ryan Macnak 47e33200fb [vm] Remove ObjectLayout::ptr(), which is now a no-op.
Change-Id: I5a066b0c510f580d8e720aba6e532218de165fb5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146061
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2020-05-04 22:54:17 +00:00
Ryan Macnak 60493d58fb [vm] Remove undefined shifts from ReadStream.
Change-Id: I3570739b77d431e412af94c87fa544805f6dbbcb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146028
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2020-05-04 22:53:47 +00:00
Ryan Macnak 14dfa1b9ee [vm] Fix gcc build.
Change-Id: I6634dc10fdc8d7523562c0fcc20e3561eb580acf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146023
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2020-05-04 21:15:27 +00:00
Zach Anderson bbebad9eca [dart:io] Don't treat a file descriptor as a signal o_o;
Prior to this CL, the signal handler finalizer passes a file descriptor
where a signal number is expected.

This went uncaught for awhile since it is innocuous in most cases.
Clearing a signal handler just involves setting it back to the
default. It is not innocuous where the VM chose to override the
default, for example in the case of SIGPIPE. When setting signal
handlers with the dart:io API, if the finalizer for a _NativeSocket
for a signal handler runs, some time later the VM may be killed by
SIGPIPE instead of getting EPIPE from an IO call.

This CL replaces the call in the finalizer with a new call that
expects a file descriptor, and uses the file descriptor to look
up the signal handler that needs to be cleaned up.

Change-Id: I54caa14a556e434872d12fd9acf8c2fcf767b91e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146080
Commit-Queue: Zach Anderson <zra@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
2020-05-04 20:19:18 +00:00
Filip Filmar b161b52331 Use new call to get ComponentContext
Fuchsia OS is making a change in the serving sequence for component
startup, to avoid a race condition in which clients attempt to connect
to services that are not yet exposed but will be.

This change is needed for a smooth transition to that new API.  The
Fuchsia SDK change has already rolled to Dart.

See: https://bugs.fuchsia.dev/p/fuchsia/issues/detail?id=50758
Change-Id: Ib1249dcf771e99f542343328918ae55497ddaf71
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/145700
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Filip Filmar <fmil@google.com>
2020-05-04 17:35:24 +00:00
Ryan Macnak 75c65a4b39 [vm] Switch Zones from arithmetic to geometric growth when they become large.
Avoids failing on Linux from exhausting Page Table Entries before exhausting physical memory or address space.

Change-Id: Idffbd0a2eb8b030f2afabb4c31135fb75deca59f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/144669
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2020-05-04 17:01:44 +00:00