Commit Graph

79322 Commits

Author SHA1 Message Date
Konstantin Shcheglov 6b793358ca Update NodeListImp constructors, owner, initialize.
Both Brian and Paul noted that in general we should express the
semantics correctly, if something is expected to be not null before
it is used, it would be nice to type it as such. This change makes
`_owner` late final, so that it is always not null, and set only once.
It should not affect performance negatively because almost always
we use `owner` inside `_initialize`, where it is a local variable.

Change-Id: I2abe45f2f98e9ac0ce69d4a65d641334244876ad
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183044
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-02-05 22:29:18 +00:00
Nate Bosch 7b4263c2b3 Update to the latest package:sse
Change-Id: I8f2f25a72f459fbea4fdd9bf4e81a7d6f5704a50
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183182
Commit-Queue: Nate Bosch <nbosch@google.com>
Auto-Submit: Nate Bosch <nbosch@google.com>
Reviewed-by: Gary Roumanis <grouma@google.com>
2021-02-05 20:57:38 +00:00
Paul Berry c14fd57acc Update AstBuilder to handle generic annotations.
Bug: https://github.com/dart-lang/sdk/issues/44838
Change-Id: If69cbbc13a087f0f6280da0bc7f9dbca1d3ec0ea
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182740
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-02-05 20:57:18 +00:00
Paul Berry 93cd0cdd3b Parser support for generic annotations.
This CL updates the parser so that it allows annotations of the form:

    `@` <constructorDesignation> <argumentPart>

Where <argumentPart> can contain type arguments.  Previously this was
prohibited at parse time.

Generic annotations are still prohibited in the current language
version, but the error is now generated by the parser listener
(BodyBuilder in the case of CFE, AstBuilder in the case of analyzer);
this should open the door for future CLs to add support for generic
annotations when the `generic-metadata` experimental flag is supplied.

Bug: https://github.com/dart-lang/sdk/issues/44838
Change-Id: I90604f38bcb378fc798c5737e486fb26589d4d1e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182668
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2021-02-05 20:57:18 +00:00
Paul Berry 3bf29dc8ff Test that generic metadata is unsupported inside function bodies.
Currently we don't support generic metadata, but we'll be adding
support soon (https://github.com/dart-lang/language/issues/1297).
When we add it, we'll still want to have tests to make sure that it's
not allowed in older language versions.

The tests we currently have to make sure it's not allowed only test
annotations occurring outside of function bodies, however the front
end code paths for handling code inside function bodies are
sufficiently different that it makes sense to test inside function
bodies too.

Bug: https://github.com/dart-lang/sdk/issues/44838
Change-Id: I846f2fc2e5ae090f21744ed6407b21a48a6d08ff
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182601
Reviewed-by: Bob Nystrom <rnystrom@google.com>
2021-02-05 20:57:18 +00:00
Ben Konyi 61b80d1b39 [ package:dds ] Add 30 second keep alive period for SSE connections
Uberproxy actively kills long standing connections after a set period of
time. This change adds a 30 second keep alive period for SSE connections
so connections can be reestablished after being killed by Uberproxy
without DDS assuming the connection has disappeared.

Change-Id: I18363da475bc5d785f85f5ffbec4102a2b7941af
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183141
Reviewed-by: Gary Roumanis <grouma@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2021-02-05 19:31:58 +00:00
Brian Wilkerson c723dae62f Add missed tests for noSuchMethod relevance
Also renamed other tests in this directory to not duplicate the
directory name.

Change-Id: I8aec73c6e44ca05f385f21b32f9c5feef1df67ef
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183121
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-02-05 18:33:57 +00:00
Lasse R.H. Nielsen 222b894d62 Change resolve for package:URIs to not remove package name.
A "package URI" is defined as one with a `package` scheme,
no authority, a first path segment terminated by `/` which
contains no escapes and is not all `.` characters.
This is the definition of package names accepted by .packages
as well: Valid path characters and not all dots.

Change-Id: I9a161d47732e8bf873d278774315c72a4a928823
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117542
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Nate Bosch <nbosch@google.com>
2021-02-05 18:31:48 +00:00
Daco Harkes 5bfeed21c1 [frontend_server] Don't print Severity.info messages
The info severity level has only been used in one instance before, and
that could only occur in the compile command.

https://dart-review.googlesource.com/c/sdk/+/180361 and
https://dart-review.googlesource.com/c/sdk/+/180560 introduced the first
uses of this severity level outside the compile command.
This is the first time an `info` is emitted in the frontend_server.

We don't want to emit `info`s for the server. This is a quick solution
to fix that. The solution has been manually verified with a Flutter app
run with a local engine build with this change patched in.
Bug: https://github.com/flutter/flutter/issues/75429

Keeping the diff as small as possible to ease cherry pick for release.

The better solution is to make the frontend_server's verbosity level
configurable.
Bug: https://github.com/dart-lang/sdk/issues/44867

Change-Id: Ie40dbb27621053e90bc8943b8cb7c5ec4c9ed643
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183005
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2021-02-05 11:59:42 +00:00
Daco Harkes 302de78b2f [samples/ffi] Fix binding signatures
Change-Id: Ie691c2f7c0ac13b8fef72cd77728520b4db1159a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183004
Reviewed-by: Clement Skau <cskau@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2021-02-05 10:22:17 +00:00
Martin Kustermann b7ad7a3000 [gardening] Use a read lock instead of a write lock
When accessing the list of isolates in a group to get the first one we
only need a read-lock, not a write-lock.

This fixes hot-reload bot timeouts where a mutator hits a StackOverflow
slowpath that triggers a reload, which loops over all isolates in a
group to stop BG compiler (takes read lock). The BG compiler in return
will try to acquire write-lock for `FirstIsolate()`, which causes a
deadlock.

TEST=Existing reload timeouts.

Change-Id: Iba9264cc4990a4f00697844c44fad407cebf2e21
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183003
Reviewed-by: Clement Skau <cskau@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2021-02-05 10:17:22 +00:00
Martin Kustermann 6f90dd22ce [gardening] Small partial revert that enabled validating constants after reload
While addresing a comment in the review of [0], the CL removed a bailout in
`Isolate::ValidateConstants()` that disabled validating of constants
when hot-reload was performed. Apparently there is still an issue with
that. So this CL adds this bailout again.

[0] https://dart-review.googlesource.com/c/sdk/+/182561

TEST=Partial revert, fixes constant validation failures.

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

Change-Id: Iefe9acceb344e73fad97246064e91a32a00dad10
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183002
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Clement Skau <cskau@google.com>
2021-02-05 10:14:14 +00:00
Johnni Winther b66bab009c [dart2js] Ensure that the class member environment for [node] is computed for live members
This CL ensures that the member environment for the enclosing class
of a live member is computed.

Static members and mixed in members a member can be become live
through static access and mixin application, respectively, which does
not require lookup into the class members.

Since the J-model class environment is computed from the K-model
environment, not ensuring the computation of the class members, can
result in a live member being present in the J-model but unavailable
when queried as a member of its enclosing class.

Closes #44754

Change-Id: I5a735f4605737947cca082450803c35887b0b7a0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/181801
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2021-02-05 09:27:52 +00:00
Alexander Aprelev 36e10faa3b [build] Add stub for third_party/android_tools for updated zlib.
This copies third_party/android_ndk/BUILD.gn to third_party/android_tools/BUILD.gn. Old version of zlib used to reference former, updated version - latter.

Follow-up to https://dart.googlesource.com/sdk/+/44d977b897e780e20383c37b85e7f284239c6803.

Change-Id: I2c2537d1db572788d83ccd09fa3b1c916202cbfb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183060
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2021-02-05 03:53:42 +00:00
Konstantin Shcheglov b68f37f311 [analyzer_plugin] Changed the analyzer version range to >=0.42.0 <0.43.0.
Change-Id: I7c91f05c8ac3518dd99ec3720607b6f8fbafba30
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182622
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-02-05 01:31:12 +00:00
Alexander Aprelev 44d977b897 [build] Update zlib dependency.
This is needed to update clang dependency as there are errors being revealed in current zlib with updated clang.

Change-Id: I916be87dec5195f159ae002d3207788b3bf9bda7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183042
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2021-02-05 01:10:32 +00:00
Ben Konyi c039ff268f [ VM ] Fix crash when accessing metrics page when no metrics have been
logged

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

TEST=regress_44859_test.dart

Change-Id: I7aa6b54f8f8d04b630d0ffe64d5414a6a9e56de2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183041
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2021-02-05 00:31:47 +00:00
Konstantin Shcheglov a7f84dc626 Make NodeList fields in AST final not lazy.
Change-Id: Ia145ea52a7a13ce8d97708a135099ef064ec3397
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182921
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-02-05 00:25:02 +00:00
Srujan Gaddam bea97da4a2 [pkg:js] Language version @Native/@JS class conflict check
Bug: https://github.com/dart-lang/sdk/issues/44797

This check was previously introduced without a language version,
and therefore lead to a breaking change on SDK update. It's now
versioned for releases >= 2.13, allowing users to migrate easier.
It also adds a hint for the error, providing alternatives for
users whose code triggers this check.

Change-Id: I4f61066a917ddb18071508291cde00710802fc5d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182920
Commit-Queue: Srujan Gaddam <srujzs@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2021-02-05 00:23:42 +00:00
Nate Bosch c83135f381 Update to the latest source_span
Change-Id: If7bb970a8e79558e6742e51e7af040c3fe846c97
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182900
Auto-Submit: Nate Bosch <nbosch@google.com>
Commit-Queue: Gary Roumanis <grouma@google.com>
Reviewed-by: Gary Roumanis <grouma@google.com>
2021-02-04 23:23:12 +00:00
Sigmund Cherem 912005267d [web] rename suite dart2js -> web.
Change-Id: I46be49b2effec3e38a3dc44cd45cfe736f77fa78
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182680
Commit-Queue: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Joshua Litt <joshualitt@google.com>
Reviewed-by: Nicholas Shahan <nshahan@google.com>
Reviewed-by: Stephen Adams <sra@google.com>
2021-02-04 23:11:32 +00:00
Alexander Aprelev 68e77932b5 Revert "[build] Update clang and gn dependency so they match Fuchsia. Update zlib dependency too."
This reverts commit 0069bdb721 as it broke mac buildbots.

For example, https://ci.chromium.org/ui/p/dart/builders/ci.sandbox/vm-kernel-mac-release-x64/12746
```
[186/1896] LINK ./process_test

FAILED: process_test exe.stripped/process_test
/opt/s/w/ir/cache/goma/client/gomacc ../../buildtools/mac-x64/clang/bin/clang++ -isysroot sdk/xcode_links/MacOSX10.14.sdk -mmacosx-version-min=10.8  -fno-exceptions -arch x86_64 -stdlib=libc++ -nostdlib++ ../../buildtools/mac-x64/clang/bin/../lib/libc++.a -Wl,-dead_strip -Wl,-search_paths_first -L. -undefined dynamic_lookup -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/../../.. -Wl,-pie -Xlinker -rpath -Xlinker @executable_path/Frameworks -o ./process_test -Wl,-filelist,./process_test.rsp    && strip -x -o ./exe.stripped/process_test ./process_test
ld: unknown option: -platform_version
clang-13: error: linker command failed with exit code 1 (use -v to see invocation)
```
Change-Id: Idec3568ef2e855ed84a92d23dc8d85f5e790b9d1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182963
Reviewed-by: Alexander Aprelev <aam@google.com>
2021-02-04 22:33:29 +00:00
Alexander Aprelev 0069bdb721 [build] Update clang and gn dependency so they match Fuchsia. Update zlib dependency too.
zlib dependency had to be updated to pick up fixes for errors revealed with updated clang.

Change-Id: I30a65faf532782dcb595c26e21c81c521bd0d074
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182667
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2021-02-04 22:11:09 +00:00
Konstantin Shcheglov 9cbe1cafe0 Element.session can be nullable
This is not convenient, and not nice, but it can be.
We have to accept that it can for now, and plan to make it better.

Bug: https://github.com/dart-lang/sdk/issues/44837
Change-Id: Icbd2d55b6690ed817b38a7768198c41ce36cf002
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182960
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-02-04 22:02:29 +00:00
Daco Harkes d052156ea4 [vm/ffi] Remove .ref VM runtime entry
After https://dart-review.googlesource.com/c/sdk/+/180190 the runtime
entry has become dead code.

This CL keeps the runtime entry itself but makes it unreachable as was
the suggestion on previous a CL removing runtime entries:
https://dart-review.googlesource.com/c/sdk/+/169406

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

TEST=tests/ffi/vmspecific_static_checks_test.dart
TEST=tests/ffi/*struct*test_.dart

Change-Id: I84c5c925215b9dbd999826fb390df91d8050e1dd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182627
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2021-02-04 21:31:29 +00:00
Lasse R.H. Nielsen 98d5ecb553 Add back accidentally removed pragma on scheduleMicrotask.
Was removed in a failed merge.

Change-Id: Ie8bd18f434786dbb7a3bc619d0b49565198c8c9c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182782
Auto-Submit: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2021-02-04 19:28:37 +00:00
Keerti Parthasarathy 8f74a46b05 Use line number to compute fixes, Cider provides line and column number.
Change-Id: I134480f88b55893a1a397847902176a792dfb0ad
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182860
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Keerti Parthasarathy <keertip@google.com>
2021-02-04 19:16:27 +00:00
Martin Kustermann 75a4fa6e23 [vm/concurrency] Move AllClassesFinalized/RemappingCids bits from Isolate to IsolateGroup
Those bits are used by parts of the VM that should be independent of the
current isolate (e.g. class finalizer, compiler).

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

TEST=Refactoring of existing code.

Change-Id: I25c8340304d21fdfa77fa5ab4a5f77a4884d0bba
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182620
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2021-02-04 18:09:37 +00:00
Martin Kustermann 376bf1826a [vm/concurrency] Move HasAttemptedReload() bool from Isolate to IsolateGroup
As part of making the compiler as well as hot-reload independent of
a particular isolate we move this boolean to `IsolateGroup`.

For hot-reloading isolate groups there are more changes needed that
come in the future. This CL is preparation for making the compiler
independent of current isolate.

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

TEST=Refactoring of existing code.

Change-Id: I434cf1180bc963462e2901dfa83e915df9dc1712
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182561
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2021-02-04 17:45:57 +00:00
Ryan Macnak be7bea72dc [infra] Add new compressed architectures to the test matrix.
This merely makes the architectures known to test.py; it does not create new bots.

TEST=ci
Change-Id: Icd50eb3b09c7eeadec796d5154226bba5cacf227
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182665
Reviewed-by: Liam Appelbe <liama@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2021-02-04 17:44:37 +00:00
Alexander Markov d423a3cd7a [vm/aot] Remove reverse PC lookup from switchable calls
This is a preparation for removal of Code objects.

Issue: https://github.com/dart-lang/sdk/issues/44852
TEST=ci
Change-Id: I9765945731c91fbdac647cc448d021238f129880
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182361
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2021-02-04 17:36:47 +00:00
Martin Kustermann 5f78a23bb9 [vm/concurrency] Remove usage of current isolate field state from compiler
As part of making the compiler independent of the current isolate (since
JITed code will be shared across all isolate) we make the compiler not
depend on global field state, with one exception: we preserve an existing
optimization that utilizes knowledge whether a global final field was
already initialized (if --enable-isolate-groups is turned off) - we do
so by asking the isolate group for it's own isolate member.

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

TEST=Refactoring of existing code.

Change-Id: I2f08d854af6102e05e5a1df8d5b66b514d6f3ce4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182540
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2021-02-04 15:54:27 +00:00
Johnni Winther 6ce8d74761 [cfe] Add Function.futureValueType and serialize Let.fileOffset
Serializing Let.fileOffset supports positions in stacktraces resulting
from null aware expressions, like `if (o?.foo) ...` when `o` is `null`.

Adding Function.futureValueType supports the proper backend
implementation for the fix in
https://dart-review.googlesource.com/c/sdk/+/181303

Closes #44654

TEST=existing

Change-Id: Ie5939a248d3d8bf41388e8f435e4ba4195afeabd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182269
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2021-02-04 14:06:47 +00:00
Alexander Thomas c88171c8af [sdk] Bump version to 2.13
TEST=Presubmit tests and local builds
Change-Id: I1b15d60eced0cf3f422548eda75706609f6640cb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182624
Commit-Queue: Alexander Thomas <athom@google.com>
Auto-Submit: Alexander Thomas <athom@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2021-02-04 12:10:17 +00:00
Martin Kustermann d604461fc5 [vm/concurrency] Avoid relying on Isolate::Current() when deoptimizing code.
The background compiler can cause finalization of classes which can
cause deoptimization of code.

Any deoptimization will iterate over all mutator threads and marks
frames on the stack to be deoptimized. This requires saving old
(fp, pc) state. This state is currently saved on the current isolate's
pending deopt array (via `Thread::Current()->isolate()->AddPendingDeopt()`)
instead of the isolate whose stack got walked.

As part of making the compiler independent of `Isolate::Current()` we
pass the isolate explicitly.

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

TEST=Refactoring of existing code.

Change-Id: I9327f3b76981fc16c1879a873edf37df1cbdd8bf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182380
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2021-02-04 11:45:22 +00:00
Martin Kustermann 59aa375d22 [vm/concurrency] Make compiler create JitCookie using IsolateGroup::random()
As part of making the compiler independent of the current isolate (since
JITed code will be shared across all isolate) we make the compiler not
depend on `Isolate::random()` but rahter on `IsolateGroup::random()`.

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

TEST=Refactoring of existing code.

Change-Id: I4a7bdd5c3e3d7ca83ef828ad6e38f117b5f2e9ce
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182560
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2021-02-04 11:12:47 +00:00
Vyacheslav Egorov 25cf5c0517 [vm/compiler] Relax reachability fence input representation requirements
When using reachability fence as an optimization barrier (e.g. to
prevent dead code elimination or allocation sinking) it is helpful
to reduce fence's impact on optimizations themselves.

TEST=ci

Change-Id: I4581c73e4704e94870a9942e05e16ab38ca2d864
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182625
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2021-02-04 11:11:07 +00:00
Johnni Winther 5a26dba0d4 [cfe] Add ExpressionGeneratorHelper.createVariableDeclarationForValue
This combines the creation of synthetic variables with registration
of the create variable in flow analysis.

The fixes the failing expectation tests that currently crashes with
assertion failures.

Change-Id: I0d581653775dab135abebdecd28c19c5712b8d88
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182562
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2021-02-04 10:54:52 +00:00
Martin Kustermann 3020f7dca2 [vm/concurrency] Remove the unused Isolate::deoptimized_code_array_ and related
Supposedly the intention was to use this in runtime/vm/profiler.cc but
it has been seemingly unused for a while without any issues or test
failures, so this CL removes it.

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

TEST=Removing of code.

Change-Id: I53df5e92e146169b6d8d21c763dd7e8b8f50289a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182510
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2021-02-04 10:54:12 +00:00
Martin Kustermann 3ce16de628 [vm/concurrency] Move no_reload_scope_depth from Isolate to IsolateGroup
As part of making the compiler and various other systems independent of
the current isolate, we move state from Isolate to IsolateGroup.

There is still follow-up work to do for hot-reloading isolate groups.

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

TEST=Refactoring of existing code.

Change-Id: I4a2cebd06b49696e733adde622217b4de6718260
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182508
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2021-02-04 10:46:47 +00:00
Martin Kustermann 9f6bc62a39 [vm/concurrency] Move boxed field list form Isolate to IsolateGroup
As part of making the compiler independent of a particular isolate
(since all isolates in a group share the same JITed code) we move the
boxed field list to IsolateGroup.

Any isolate that hits the lazy compile stub will then drain the fields
to be deoptimized and performs that work.

A follow-up investigation can decide whether it's beneficial (or
hurtful) for single vs multi isolate scenarios to deoptimize the field
immediately in BG compiler (and interrupt mutator). It is possibly
disadvantagues for single isolate scenarios to do so, since it causes
more mutator interruptions.

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

TEST=Refactoring of existing code.

Change-Id: I64b42ad99056b43a7264bcc30280b9ba39389a2e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182505
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2021-02-04 10:46:07 +00:00
Vyacheslav Egorov 6b5b74ee0e [vm/arm64] EmitLoadInt32FromBoxOrSmi should load 4 bytes only
This is follow up to 6681bce565
the intent was always to perform a sign-extending 4 bytes load.

TEST=ci

Cq-Include-Trybots: luci.dart.try:vm-kernel-linux-release-simarm64-try,vm-kernel-precomp-linux-release-simarm64-try
Change-Id: Ie2b733c4de9bd564cb666d54c9e7b483dbfbeabb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182261
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2021-02-04 09:53:52 +00:00
Vyacheslav Egorov 24a30defcc [vm] Ensure liveness of typed data containing Kernel binary
When handling hot reload via library tag handler's Kernel tag
VM must guarantee that external typed data it receives from the
embedder stays alive for as long as VM has any structures
referencing this kernel binary. This is achieved by attaching
original typed data to KernelProgramInfo objects containing
the views into it.

Unfortunately kernel::Reader APIs were somewhat unsafe: allowing
to construct reader object from Program's raw buffer and forget to
set the link betwen the reader and original typed data.

This created a situation where reloading using a multicomponent
Kernel binary would result in KernelProgramInfo objects without
link to the original typed data, which in turn leads to premature
finalization of external typed data and subsequent crashes
when trying to use delete kernel binary.

This CL reworks kernel::Reader API (by introducing kernel::ProgramBinary
wrapper) to make it safer and make sure that connection is preserved.

TEST=vm/cc/IsolateReload_RegressB179030011

Bug: b/179030011
Change-Id: I05f8c31c3cb8e67de6e94a20d9501a5f476b7e27
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182280
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2021-02-04 09:46:17 +00:00
Paul Berry ba5064fa31 Analyzer AST changes for generic metadata
Bug: https://github.com/dart-lang/sdk/issues/44838
Change-Id: I55b8dacc571570568c1b3f101a1a4e1f517f7f6f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182581
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-02-04 09:45:47 +00:00
Clement Skau 2f004a27d4 [VM] Removes deleted causal_stacks tests from .status.
TEST=Tested all configurations.

Bug: https://github.com/dart-lang/sdk/issues/41808
Change-Id: I1965788f51124deff0dd177414c38954a80cbd26
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182260
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Auto-Submit: Clement Skau <cskau@google.com>
2021-02-04 09:35:27 +00:00
Jens Johansen f3f831f103 [CFE] Enable asserts on unit test suites
This also updates the status files with the new crashes caused by
assert failures.

Change-Id: I0ec3fe8a10ad77c712760ab262297913f84e89b6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182503
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2021-02-04 08:13:47 +00:00
Jens Johansen 1392263ecc [parser] Non-crashing recovery of in-progress generification of typedef
Fixes #43090

Change-Id: I1377ebf08a8c561e4f15abbf458c5bb0d8c61494
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182040
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2021-02-04 08:01:07 +00:00
Clement Skau 2236883ff2 [SDK] Removes non-exiting tests from .status
TEST=Tested all configurations.

Change-Id: Iec00d7e6ea56221ffebcf044de22647907f598f1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182500
Reviewed-by: Tess Strickland <sstrickl@google.com>
Commit-Queue: Clement Skau <cskau@google.com>
2021-02-04 06:46:13 +00:00
Konstantin Shcheglov 950234803b Update DartEditBuilderImpl.writeType() to support type aliases.
Change-Id: I560596384e8a8d422a013b6597ca9ab91c2d00df
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182663
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-02-04 00:23:29 +00:00
Konstantin Shcheglov 3be5f7c356 Use Future<void> when extract an async method that returns nothing.
R=brianwilkerson@google.com

Change-Id: Ic148974ba587310c475795caf8ed0c8565d96909
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182664
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-02-03 22:25:39 +00:00