Commit Graph

18413 Commits

Author SHA1 Message Date
Clement Skau 6313c1c47c [VM] Fixes wrong static_type_exactness_state_
This fixes an internal test crash where snapshots are compiled
with an x64 toolchain and run on ia32:

`runtime/vm/compiler/backend/il_ia32.cc: 1859: error: unimplemented code`

TEST=tools/test.py -n dartk-linux-debug-ia32 vm/dart_2/causal_stacks/

Change-Id: I9ac652e428e5463926052e0c94c430c86eadd4bc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179762
Commit-Queue: Clement Skau <cskau@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2021-01-18 12:03:29 +00:00
Johnni Winther f8b0d26cc3 [vm] Pass snapshot flag to kernel_service
Enable reporting of null safety compilation mode when running
`dart compile aot-snapshot`, `dart compile jit-snapshot`,
and `dart compile kernel`.

Closes #44234

TEST=pkg/dartdev/test/commands/compile_test.dart

Change-Id: I0d4b35c6ccb4167c0c7539a4eb24a5139e29cf53
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178990
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
2021-01-18 09:27:59 +00:00
Martin Kustermann 1b38b85223 [vm/concurrency] Rename IsolateReloadContext -> ProgramReloadContext
As part of making the compiler and other subsystems independent
of `Isolate` we have to move various state from `Isolate` to
`IsolateGroup` (or to another place).

Part of that is `Isolate::reload_context()`. In order to avoid name
conflict of what a `reload_context()` is, we separate it into
`reload_context()` and `program_reload_context()` where the former
contains GC information and the latter contains information about
changes in program structure.

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

TEST=Pure refactoring - relying on existing test coverage.

Change-Id: I7e1b732ce8b34c8842718699d618be542bd59ff6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177863
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2021-01-16 15:42:53 +00:00
Ryan Macnak b1c09ecd8f [vm] Make naming more consistent when converting between handles, tagged and untagged pointers.
Currently we have things called XPtr which are not what you get from ptr().

Old world:
handle->raw() returns RawObject* (tagged)
raw_obj->ptr() returns RawObject* (untagged)

After 6fe15f6df9:
handle->raw() returns ObjectPtr
obj_ptr->ptr() returns ObjectLayout*

New world:
handle->ptr() returns ObjectPtr
obj_ptr->untag() returns UntaggedObject*

TEST=ci
Change-Id: I6c7f34014cf20737607caaf84979838300d12df2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/149367
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2021-01-15 23:32:02 +00:00
Daco Harkes 3a0a33f35f [vm/ffi] Add fields to Structs which should not be empty
This CL adds fields to `Struct`s which should not be empty or removes
the structs.

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

TEST=tests/ffi/vmspecific_static_checks_test.dart

Change-Id: I4a684bd96e3ed16a3fd0dd17019aeabf64ef074a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179182
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2021-01-15 12:24:13 +00:00
Daco Harkes ac805dff54 [vm/ffi] Migrate to empty Structs to Opaque
This CL migrates empty `Struct`s to `Opaque` native types.
It stops using `.ref` on `Pointer`s to these types.
And stops using `.ref` on `Pointer<Utf8>` which will be migrated in
`package:ffi`.

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

Change-Id: I3aa256af7d4ceaa8ee37b1b2ada71f870f43617b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179181
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2021-01-15 10:52:53 +00:00
Ryan Macnak 63d17b0ad8 [vm] Defer object pool entries in instructions bare mode.
dart2js+analyzer product X64 bare:
app.so            9289320 ->  8491864 (-8.58%)
app.so-2.part.so 12010936 -> 12315880 (2.53%)
app.so-3.part.so  7579704 ->  7847768 (3.53%)

TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/41974
Change-Id: I8e695966bc11c3912a01cd525ca69be6ef8e5ea2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/171102
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2021-01-15 03:32:44 +00:00
Ryan Macnak 7fcdd65b45 [vm] Ensure release-acquire ordering for variously lazily populated fields that are consumed without acquiring a lock.
TEST=tsan
Bug: https://github.com/dart-lang/sdk/issues/36097
Change-Id: I20c871ae4b4451b876b9b8bc5dde910dfedb6d65
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179400
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2021-01-15 01:44:12 +00:00
Ryan Macnak b02cd95263 [vm, compiler] Fix per-Code ObjectPools to track all the objects used by a Code in bare instructions mode.
Fix disassembly in bare instructions mode to query the global object pool.

TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/41974
Change-Id: I3ad66a8cd7d9ee19c848b68ed584d58dca6bf583
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179300
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2021-01-14 23:06:56 +00:00
Ryan Macnak fe93564d77 [vm] Fix compile-time errors building for ARM64 Mac.
TEST=build
Change-Id: I07b83f7f86211baf6d0b1b4b517eb1bf08e5c0db
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178923
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2021-01-14 21:23:43 +00:00
Regis Crelier f978dbe054 [VM/runtime] Replace kernel provided type parameter names by canonical ones.
When a function type does not describe the signature of a function (e.g. when it just describes a function type literal), the names of the type parameters are not relevant and can be replaced by canonical names allowing proper canonicalization of type literals.

TEST=fixes upcoming language/nnbd/const/type_literals_test

Change-Id: I62924ef619ae3f5a2fe5964f45c8d60990f3aa69
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179060
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2021-01-14 19:59:33 +00:00
Ryan Macnak 5052848af3 [vm] Finalize early when building flow graph for a constructor call to synchronize populating Class::num_type_arguments_.
Hold the program structure read lock during private function lookup to acquire initializing stores.

TEST=tsan
Bug: https://github.com/dart-lang/sdk/issues/36097
Change-Id: I4a35560feddeaffd6e3a5ba3705547af8f492b51
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179061
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2021-01-14 18:01:03 +00:00
Michal Terepeta 978b838461 Revert "[VM] Adds Future.then and Future.catchError stack unwinding."
This reverts commit 8f2c47f24b.

Reason for revert: We suspect this is causing VM crashes: http://b/177506826

Original change's description:
> [VM] Adds Future.then and Future.catchError stack unwinding.
>
> TEST=Various 'causal' tests updated below.
>
> Bug: https://github.com/dart-lang/sdk/issues/40815, https://github.com/dart-lang/sdk/issues/37953
> Change-Id: I1420d6163ac2e3b22e0971f7b0ad516895dded70
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176662
> Commit-Queue: Clement Skau <cskau@google.com>
> Reviewed-by: Vyacheslav Egorov <vegorov@google.com>

TBR=vegorov@google.com,cskau@google.com

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: https://github.com/dart-lang/sdk/issues/40815
Bug: https://github.com/dart-lang/sdk/issues/37953
Change-Id: I870f0202f43588f71a5d2b0f82338978b5a5dda9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178998
Reviewed-by: Michal Terepeta <michalt@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Michal Terepeta <michalt@google.com>
2021-01-14 13:56:53 +00:00
Daco Harkes c7306aaf41 [vm/ffi] Migrate runtime/tests/vm to CallocAllocator
This CL does not yet roll `package:ffi` to use `Allocator`, because that
breaks the checked in Dart in Flutter in g3. Instead, this uses the copy
of `_CallocAllocator` from `package:ffi` in `calloc.dart` in tests/ffi.

New API landed in: https://dart-review.googlesource.com/c/sdk/+/177705

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

Change-Id: Iedfc4a11d4606915a324c824372bca643016f5a3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178994
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2021-01-14 12:28:23 +00:00
Ben Konyi e49937769f Revert "[ CLI ] Improved consistency of -D and --define across tools and"
This reverts commit e83e78431f.

Reason for revert: Failing on SIMARM and AOT bots

Original change's description:
> [ CLI ] Improved consistency of -D and --define across tools and
> commands
>
> - Added support for --define to the VM and dart2js
> - Added support for -D and --define for `dart run` and `dart compile js`
>
> Remaining improvements:
> - Add support for providing multiple comma separated values for `dart
>   run`, `dart`, and `dart2js`
>
> Related issue: https://github.com/dart-lang/sdk/issues/44562
>
> TEST=Updated CLI tests and added new dart2js tests.
>
> Change-Id: I9379c7aee1eab377adb3438393d9ad79c4938cc4
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178262
> Commit-Queue: Ben Konyi <bkonyi@google.com>
> Reviewed-by: Sigmund Cherem <sigmund@google.com>
> Reviewed-by: Siva Annamalai <asiva@google.com>

TBR=bkonyi@google.com,asiva@google.com,sigmund@google.com

Change-Id: I1c594ae7db551619cc3191ff7f832c4fc61a4171
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179081
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2021-01-14 01:05:29 +00:00
Ben Konyi e83e78431f [ CLI ] Improved consistency of -D and --define across tools and
commands

- Added support for --define to the VM and dart2js
- Added support for -D and --define for `dart run` and `dart compile js`

Remaining improvements:
- Add support for providing multiple comma separated values for `dart
  run`, `dart`, and `dart2js`

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

TEST=Updated CLI tests and added new dart2js tests.

Change-Id: I9379c7aee1eab377adb3438393d9ad79c4938cc4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178262
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2021-01-13 23:33:17 +00:00
Regis Crelier 16f2a1edc5 [VM/runtime] Implement constant canonical type erasure when reading from kernel.
Modify the constant verification when writing a full snapshot in agnostic mode.
The implemented changed are specified in https://github.com/dart-lang/language/pull/1389
This (partially) fixes issue https://github.com/dart-lang/sdk/issues/44643
More work may be required for type parameter names of type literals.

TEST=new tests added in https://dart-review.googlesource.com/c/sdk/+/178929

Change-Id: Ie42bbe482763f8e737c3f5bd26e7752511e7398e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178927
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2021-01-13 20:26:18 +00:00
Clement Skau 8f2c47f24b [VM] Adds Future.then and Future.catchError stack unwinding.
TEST=Various 'causal' tests updated below.

Bug: https://github.com/dart-lang/sdk/issues/40815, https://github.com/dart-lang/sdk/issues/37953
Change-Id: I1420d6163ac2e3b22e0971f7b0ad516895dded70
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176662
Commit-Queue: Clement Skau <cskau@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2021-01-13 08:00:14 +00:00
Lasse R.H. Nielsen ef8cc2c1cf Remove LateInitializationError.
As per planned breaking change to let platforms decide how they and what throw for late initiaization errors,
we no longer need a public `LateInitializationError` class. It's confusing to have one if some platforms throw
something else instead.

Removes the public abstract class. The dart:_internal implementation class `LateError` no longer implements it.
This is the only implementation of the public interface, and the class which platforms either throw directly,
or through front-end lowering of the feature.

Remove mentions in tests. All tests now just expect `Error`, some platform specific tests might test the message.

TEST=rewrote tests referring to LateInitializationError.

Change-Id: I54344a67f89ce101ed770412db134e12354cdcc4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174928
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Nate Bosch <nbosch@google.com>
2021-01-12 20:21:33 +00:00
Ben Konyi cbc46012b5 [ VM ] Address comments from https://dart-review.googlesource.com/c/sdk/+/178723
TEST=N/A

Change-Id: Ied133a59eb5562971ecca7f6106650e25676a539
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178860
Reviewed-by: Siva Annamalai <asiva@google.com>
2021-01-12 18:53:05 +00:00
Ryan Macnak 784e69a6ad [vm, gc] Ensure exclusive access to the heap during deserialization.
TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/41974
Change-Id: I37d2b83802a11b9cf5ffc2d7d4852daa18941006
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178720
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2021-01-12 17:42:41 +00:00
Ben Konyi d9ca0514bc [ Service ] Disconnect existing clients when DDS calls
_yieldControlToDDS

Instead of DDS failing to connect when there are existing clients
connected to the VM service, the VM service will now disconnect these
clients when _yieldControlToDDS is invoked.

If an existing DDS instance is already connected, existing clients will *not*
be disconnected and instead an error will be returned containing the URI of
the existing DDS instance.

TEST= runtime/observatory/tests/service/dds_disconnects_existing_clients_test.dart

Change-Id: I08e126d99f51ff14205f359a60ca802c27fd206d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178725
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2021-01-12 02:05:00 +00:00
Regis Crelier daef1f0dbf [VM/runtime] Turn error for missing entry point pragma into a warning.
Print a warning and continue execution after the signature of a function cannot
be verified, because it was not marked as entry point and therefore tree-shaken.
Keep reporting the error only if the flag --verify-entry-points was specified.

Add missing entry point pragma to `scheduleMicrotask` in `dart::async`.
See issue https://buganizer.corp.google.com/issues/177110012

TEST=CL to be patched in test roll of Flutter to Google3 for verification

Change-Id: I1e5f42d02a312363f3003480b053d881a9a58048
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178722
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2021-01-12 00:41:30 +00:00
Ben Konyi fd259d4377 [ VM ] Fix invalid free introduced in c42c76f590
It's possible for loading the CLI isolate from snapshot to be skipped
without failing for SIMARM, so *error would not point to a valid error,
causing free(*error) to crash.

TEST=Existing tests

Change-Id: Ic178f7bd0f89c4440b2daf714fbb2e428867bd72
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178723
Reviewed-by: Ben Konyi <bkonyi@google.com>
2021-01-11 23:25:28 +00:00
Ben Konyi c42c76f590 [ VM / CLI ] Run DartDev isolate from snapshot when possible
This change tries to run from dartdev.dart.snapshot and falls back to
running from dartdev.dill if incompatible VM flags are provided.

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

Performance results:

dart test.dart (no CLI isolate): 0.167s
dart run test (from snapshot):   0.208s
dart run test (from kernel):     0.326s

TEST=pkg/dartdev/test/load_from_dill_test.dart

Change-Id: I3195886b86676580ef2a0221f0284328964ef061
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178300
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2021-01-11 19:41:50 +00:00
Alexander Markov 9d1a307954 [vm] Add specialized factory constructors for small list literals
Flutter gallery in release mode:
AOT snapshot size arm64 -0.22%, arm -0.21%
instructions size arm64 -0.46%, arm -0.4%

TEST=existing tests

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

Change-Id: I4733e91ecf4601c0bcde725cf9e97f5db0b8bc13
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175821
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2021-01-11 19:32:30 +00:00
Alexander Markov 8c2ab1d04f [vm/compiler/arm] Fix register constraint for Float32x4ToFloat64x2
S-register operand used in VCVTDS instructions cannot be allocated to
an arbitrary Q-register and needs to be constrained (otherwise an
invalid instruction is generated).

TEST=runtime/tests/vm/dart/regress_42067_test

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

Change-Id: I46b5ff3c75a50361eccebb1c74878bfb3c35d301
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178162
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2021-01-08 23:00:23 +00:00
Ryan Macnak 0bf8d38b3d [vm] Defer object pools.
This is a step toward deferring literals, to effectively split binary size for libraries that are more data than code, such as localizations. Bare instructions mode still has all constants in the root snapshot because it has one global ObjectPool.

dart2js+analyzer product X64 non-bare:
app.so           10072728 ->  8479824 (-15.8%)
app.so-2.part.so 14074512 -> 15016976 (6.69%)
app.so-3.part.so  9225936 ->  9888984 (7.18%)

TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/41974
Change-Id: If61f6156e3fc2dd539331335b3bf0458102b7c75
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/168991
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2021-01-08 22:11:03 +00:00
Ryan Macnak f59ae1e4ca [vm, arm64] Fix assertion when linking native calls.
TEST=run anything on debug simarm64
Change-Id: Idad4c1c7c008c504904b5aa26a4f81418f3a26c2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178263
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2021-01-08 20:40:52 +00:00
Clement Skau a6dde1b121 [doc] Nit: Fixes MD formatting, pragmas.md
TEST=CQ

Change-Id: I33c1c148f37142d26de791c5b56cfef80f5de364
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178203
Commit-Queue: Clement Skau <cskau@google.com>
Reviewed-by: Clement Skau <cskau@google.com>
2021-01-08 14:35:42 +00:00
Regis Crelier b3bca1821c [VM/runtime] Decouple representation of function signatures from Function objects.
This fixes issue https://github.com/dart-lang/sdk/issues/43088

This CL improves on https://dart-review.googlesource.com/c/sdk/+/166920 by keeping the names of type parameters.

See go/dart-vm-signatures for motivation for this change.

TEST=existing suites

Change-Id: Ia82f1d322f72d07b2fb253cf914f9b868025c71e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176981
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2021-01-07 23:45:37 +00:00
Alexander Markov 28edda4e41 [vm] Propagate all errors when calling Dart code from hot reload stress testing
When hot reload stress testing calls Dart code from stack overflow
check, Dart code may throw various runtime exceptions such as
StackOverflowError, not just UnwindError.

This is a possible fix for the flaky crash

../../runtime/vm/runtime_entry.cc: 2517: error: Bad script uri hook: UnhandledException
version=2.12.0-edge.26805bc63631b60de9ec31049ce93f6df3e17fde (be) (Thu Jan 7 01:55:41 2021 +0000) on "linux_x64"
pid=3227, thread=3254, isolate_group=main(0x5588bcb15c00), isolate=main(0x5588bcaee800)
isolate_instructions=5588baecc6e0, vm_instructions=5588baecc6e0
  pc 0x00005588bb2905fc fp 0x00007ff59389eff0 dart::Profiler::DumpStackTrace(void*)+0x7c
  pc 0x00005588baecc892 fp 0x00007ff59389f0d0 dart::Assert::Fail(char const*, ...)+0x82
  pc 0x00005588bb305af8 fp 0x00007ff59389f2a0 dart::DRT_StackOverflow(dart::NativeArguments)+0xf18
  pc 0x00007ff59aa023e2 fp 0x00007ff59389f2e0 Unknown symbol

on the test language_2/unsorted/stack_overflow_stacktrace_test.
This test is supposed to trigger stack overflow eventually, which may
also appear in hot reload stress testing.

TEST=language_2/unsorted/stack_overflow_stacktrace_test

Change-Id: Iad1feeecd7ee2aea451d1c698d17680cbc29d02d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178081
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2021-01-07 22:03:38 +00:00
Clement Skau 3ee490327e [VM] Adds @pragma('vm:notify-debugger-on-exception')
Note: This is a reland:
- Relocates the tests.
- Adds status file skip for dartkp.

TEST=runtime/observatory{,_2}/tests/service{,_2}/notify_debugger_on_exception_test.dart

Bug: https://github.com/flutter/flutter/issues/17007
Change-Id: I5c79c140c5e7dee9dfeaa6d4bf750cf4d72f6e85
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177580
Commit-Queue: Clement Skau <cskau@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2021-01-07 14:33:48 +00:00
Martin Kustermann eb2cac730e [vm] Remove incorrectly added ASSERT
This is a follow-up to

    https://dart-review.googlesource.com/c/sdk/+/177709

TEST=Removing incorrect ASSERT.

Change-Id: I146523d97f85271d5bce242d3284dc92ee5a21e7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177880
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2021-01-07 14:17:48 +00:00
Martin Kustermann 51674dea10 [vm/concurrency] Make static-const fields that are purely used by runtime operate on initial field table
For normal Dart code a usage of a constant (e.g. from a static const
field) is "inlined": It is represented as a `ConstantExpression` AST
node with a reference to the "evaluated" `Constant` node.
=> Static const fields are never accessed by generated code.

We would therefore not need to represent static const fields in
Kernel/VM anymore. Though there are a few exceptions where the VM's
runtime code needs access to them, which is why they are kept.

The VM runtime code doesn't need an isolate-specific slot for such
static const fields (it's a waste).

=> This CL changes the runtime code that accesses such fields to operate
   on the `IsolateGroup`s initial field table instead.

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

TEST=Pure refactoring - relying on existing test coverage.

Change-Id: I5994811a1c1016b2f523b318b698c9e052a98c29
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177709
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2021-01-07 11:44:58 +00:00
Martin Kustermann 5cd0770c9c [vm/concurrency] Move closure function related state from Isolate to ClosureFunctionsCache
As part of making the compiler and other subsystems independent
of `Isolate` we have to move various state from `Isolate` to
`IsolateGroup` (or to another place).

The access of `ObjectStore::closure_functions()` was spread out over our
codebase, including from `Isolate`. This CL moves it to a centralized
place - ClosureFunctionsCache.

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

TEST=Pure refactoring - relying on existing test coverage.

Change-Id: I3b282623f07614cdc2c2a863bd5b9d6c7748d36f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177130
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2021-01-07 09:41:27 +00:00
Alexander Markov 3bef6cf639 [vm/aot] Attach unboxing info to unreachable members
Unreachable members could be used as interface targets of dispatch
table calls, so they should have correct unboxing metadata.
This change fixes attaching unboxing info to such members.

TEST=runtime/tests/vm/dart/regress_44563_test.dart

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

Change-Id: I5da6a8d07048904eb94b05bfba11bdf72d655e12
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177621
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2021-01-06 18:12:51 +00:00
Ryan Macnak 0a63d23c11 [vm] Don't allocate a backing store for maps until the first insert.
Empty maps are fairly common; delaying allocation of the backing store saves time and memory for empty maps. Non-empty maps probe an extra time for the first insert.

Most maps also have few associations, so reducing the initial backing store size also saves memory on balance. The best value for dart2js would be 2 associations, but this CL changes it to 4 as a compromise with other benchmarks on Golem.

Runtime as Score geomean              2.620%
MemoryUse geomean                    -5.233%
dart2js CompileSwarmLatest            0%
dart2js CompileSwarmLastedMemoryUse -10.51%

TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/26081
Change-Id: I80a925f698f3df44fae5e97e1804c8dff2ce0c60
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176583
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Stephen Adams <sra@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2021-01-06 17:49:31 +00:00
Martin Kustermann 0f76981bb1 [vm/concurrency] Change references to class_table/object_store/heap from Isolate to IsolateGroup
As part of making the compiler and other subsystems independent
of `Isolate` we have to move various state from `Isolate` to
`IsolateGroup`.

The class_table and object_store were already moved to `IsolateGroup`.

This CL only replaces usages of `Isolate::{object_store,class_table}`
with the equivalent in `IsolateGroup`.

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

TEST=Pure refactoring - relying on existing test coverage.

Change-Id: I34a0682d715b054d6c5faff077a513980f59a348
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177126
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2021-01-06 15:22:11 +00:00
Martin Kustermann 897b1a2121 [vm/concurrency] Move osr/field-guard related state from Isolate to IsolateGroup
As part of making the compiler independent of `Isolate` we have to move
various state from `Isolate` to `IsolateGroup`.

This CL moves osr/field-guard related state.

TEST=Pure refactoring - relying on existing test coverage.

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

Change-Id: Id943891476f892f64f2a74952681270d012a4693
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177125
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2021-01-06 13:32:10 +00:00
Martin Kustermann 12d7707179 [vm/concurrency] Move null safety related state from Isolate to IsolateGroup
As part of making the compiler independent of `Isolate` we have to move
various state from `Isolate` to `IsolateGroup`.

This CL moves null safety related state.

TEST=Pure refactoring - relying on existing test coverage.

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

Change-Id: Ie0b19b8ef84768c9665326c4f955c956c6ba60bb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177123
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2021-01-06 12:20:40 +00:00
Martin Kustermann 18971e409f [vm/concurrency] Move obfuscation related state from Isolate to IsolateGroup
As part of making the compiler independent of `Isolate` we have to move
various state from `Isolate` to `IsolateGroup`.

This CL moves obfuscation related state.

TEST=Pure refactoring - relying on existing test coverage.

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

Change-Id: I4b0a74bff9abc200cf8f4ce76b3e1d3d688e664a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177122
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2021-01-06 11:12:40 +00:00
Martin Kustermann ffac0bcfd5 [vm/concurrency] Remove Dart_IsolateFlags.entry_points / Dart_QualifiedFunctionName from Dart C API
This CL removes the unused entry points in the C API. This is a breaking
API change but we don't promise normal Dart C API stability and existing
known embedders don't specify this flag.

TEST=Pure refactoring - relying on existing test coverage.

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

Change-Id: Ic27662743e48f5f5cfbf770baf2cd255ed3f15b5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177121
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2021-01-06 10:24:45 +00:00
Martin Kustermann 99db985dfa [vm/concurrency] Remove Isolate::embedder_entry_points_ and related code
The embedder entrypoints stored on the Isolate object are ignored atm.

TEST=Pure refactoring - relying on existing test coverage.

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

Change-Id: I4098461c6ee649dffd0f662362cb4f0ae54e88f1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177120
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2021-01-06 10:23:10 +00:00
Ryan Macnak 4a33f9befd [observatory] Update Catapult to de6e3a9d85af0a8bfdd39245e72dc94fd8b579d9.
TEST=manually interact with timeline page
Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1036492
Change-Id: I955136f4ff9c5a62676912177ffc91fc51a8fd45
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177660
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
2021-01-05 23:40:10 +00:00
Ryan Macnak c899945e2f [observatory] Remove dead import of package:usage.
TEST=build
Change-Id: I19d145b90e87e7977c4983d22e4bc4555529b6cc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177661
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2021-01-05 22:19:18 +00:00
Ivan Inozemtsev 8038cdb59a Fix static initialization order problem
When static kPrologueSource refers to
TokenPosition::kDartCodePrologue, address sanitizer generates a
https://github.com/google/sanitizers/wiki/AddressSanitizerInitializationOrderFiasco
warning.

Fixing with a construct on first use idiom suggested by
https://isocpp.org/wiki/faq/ctors#construct-on-first-use-v2

TEST=covered by existing tests
Change-Id: I8962f96f008e39f54fcca3a7a7dbebf4d8e72a84
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177600
Commit-Queue: Ivan Inozemtsev <iinozemtsev@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
2021-01-05 16:25:09 +00:00
Parker Lougheed b3f22d072e [Observatory] Switch to Dart 2.12 and remove redundant experiment
TEST=None
Change-Id: I16bf33a6fc78c7bdcd32b376919b348922777b47
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176880
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
2020-12-30 02:26:25 +00:00
Johnni Winther b4d4316de0 [cfe] Rename stub kinds
ForwardingStub -> AbstractForwardingStub
ForwardingSuperStub -> ConcreteForwardingStub
MixinStub -> AbstractMixinStub
MixinSuperStub -> ConcreteMixinStub

TEST=refactoring

Change-Id: Ice76a41ce8e1071f553ed8fd3ecbb29c97377161
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177129
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-12-29 16:54:55 +00:00
Johnni Winther 60702d4158 [cfe] Make field assignability immutable
Changes fields to be either mutable or immutable by construction.
This ensure that we don't create setter references for fields that
cannot be assigned to and is a prerequisite for replacing @fields/
@fields= canonical names with @getters/@setters.

TEST=existing expectation tests and verification

Change-Id: I70b9a504ee6f221b7c334ac02620feb0d5f7ae01
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176665
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2020-12-28 16:11:14 +00:00