Commit graph

93035 commits

Author SHA1 Message Date
Danny Tuppeny
6229694c74 [analysis_server] Don't remove unused parameters when running fix-all-on-save
Fixes https://github.com/Dart-Code/Dart-Code/issues/4655

Change-Id: I09269766124f7b77fde7c499c6f69a09989d1766
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/317684
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2023-08-09 15:49:06 +00:00
pq
eb2af1a41a +implicit_reopen link
Change-Id: I7e4468ab77b86437bd0483698cf2be873b9f57c5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/319002
Commit-Queue: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2023-08-09 15:43:19 +00:00
Ryan Macnak
b11340bc4a [test] Skip service tests on Linux ARM64.
TEST=ci
Change-Id: I4277a4f4f2c3bd9dedd9e325167b67130b5afc2d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/319260
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
2023-08-09 15:32:13 +00:00
Tess Strickland
7f943ea210 [benchmarks] Fix MemoryCopy when elapsed time is too small.
Otherwise, we might get +Inf which will then fail on the conversion
to an integer in ceil().

Change-Id: Ibba49257e6801894f1e7724aa7a998ba579f7be3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/319520
Auto-Submit: Tess Strickland <sstrickl@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2023-08-09 15:28:55 +00:00
Parker Lougheed
401fa6130f [analyzer] Mark diagnostics as published and fix spelling mistakes
Change-Id: Ib9bc435b88611724cf0527d942990991ecf8d024
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/319340
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2023-08-09 15:16:03 +00:00
Kyle Turney
3c8fccf7a4 add fix for removing the leading underscore in constructor parameter lists
Closes https://github.com/dart-lang/sdk/pull/53122

GitOrigin-RevId: 802bc7caf2816906cc38de44784c20531675fdc2
Change-Id: I1adbd74ec20f2a4e2d78d6da9dd538d03ca0475e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318200
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2023-08-09 15:08:47 +00:00
(AJ) Zin Kyaw
1265ffa9c5 Added missing content-disposition header
Closes https://github.com/dart-lang/sdk/pull/53129

GitOrigin-RevId: beb751dd77fcc201323199eb297265e2177c60b3
Change-Id: Ic693d15d44a7478f4387668d85a3b3c85adc191e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318620
Reviewed-by: Slava Egorov <vegorov@google.com>
Commit-Queue: Slava Egorov <vegorov@google.com>
2023-08-09 13:36:10 +00:00
Tess Strickland
d984fd77f6 [benchmarks] Add MemoryCopy benchmark suite.
The MemoryCopy benchmark suite measures the overhead of copying
data between compatible TypedData or Pointer values.

Change-Id: Iaf5ea27b7f9177f4800880da36234afd2b908db2
Bug: https://github.com/dart-lang/sdk/issues/42072
Bug: b/294114694
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318661
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Tess Strickland <sstrickl@google.com>
2023-08-09 13:28:44 +00:00
Vyacheslav Egorov
5ddb1b8ea7 [vm/service] Use getline to read /proc/self/smaps
Previously the code was using `fgets` with a fixed
size buffer. This lead to a confusing behavior where
lines longer than 255 characters would be read
in multiple chunks and cause crashes in the parsing code.

Additionally make extraction of the path component slightly
more robust by searching for path field forward rather than
backwards. Path might contain white space and searching
backwards might stumble on that.

This is a reland of 95474f44f1
with changes to android min-sdk to make android ARM builds
succeed (getline requires SDK 18+).

TEST=manually

Change-Id: I8b36fcd178680aed7f856bc884a5cd188a5f6e85
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/319480
Commit-Queue: Slava Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2023-08-09 12:59:31 +00:00
Johnni Winther
0769b22b4f [cfe] Support interface member access on extension types
Change-Id: I53975b71683e119fe6abec72341cdcd814244f58
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318982
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2023-08-09 12:19:39 +00:00
Erik Ernst
30201181ce Update Dart.g to support extension types, not inline classes
Change-Id: I785eae3d32363db95a3cad00ee3c2c827a5ec9da
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/319400
Commit-Queue: Erik Ernst <eernst@google.com>
Reviewed-by: Lasse Nielsen <lrn@google.com>
2023-08-09 11:34:28 +00:00
Martin Kustermann
07549ac9ab [vm] When marking an instruction as deopt to before an instruction, ensure prune-count=0
The [Environment] represents 2 different things:

  * before (env, deopt-id): The state of unoptimized frame right before
    the IL instruction is executed

  * after (env, deopt-id): The state of unoptimized frame right after
    the call machine instruction instruction (i.e. which may not be
    after the IL instruction - as it may still have to drop arguments)

The environment's prune-count specifies the number of entries from the
[Environment] to be removed to get from before-env to after-env.

This prune-count includes generally most of `<IR>::InputCount()` - as
most IR instructions consume their inputs (which location summary may
e.g. require in registers) before doing any call. Though it doesn't include
arguments as we currently have a stack-based calling convention and both
optimized and unoptimized code will explicitly drop them after the machine
call instruction.

Our optimizing compiler may emit speculative instructions. Those will
receive an environment that makes before (env, deopt-id) and after (env,
deopt-id) the same - as both eager and lazy deopt will target a
before (env, deopt-id).

=> We should ensure that the prune-count is set to 0, ensuring we won't
prune anything in case an IL instruction was marked with
`MarkAsLazyDeoptToBeforeDeoptId`.

=> This is a preparation for inlining force-optimized functions: If we
inline them and some callee IL instruction performs lazy deopt it should
re-try the call without any pruned inputs.

TEST=ci

Change-Id: I091c9fa962b376200dc5cfb6ea8c9a47ef43810f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/319440
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
2023-08-09 11:31:47 +00:00
Oleh Prypin
27ad1a74dd Revert "[dart2js] Add runtime type check for await."
This reverts commit c81711bdda.

Reason for revert: `Internal Error: Runtime type information not available for type_variable_local` - b/295131730

Original change's description:
> [dart2js] Add runtime type check for `await`.
>
> See https://github.com/dart-lang/sdk/issues/49396 for details.
>
> Fixes: #50601
> Change-Id: Ie89130cffe642b3e4935d7d02fe2e34f7fc8b12e
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/316320
> Commit-Queue: Mayank Patke <fishythefish@google.com>
> Reviewed-by: Stephen Adams <sra@google.com>

Change-Id: I481b119b6569d1bc9cf2ab80d997a3eb6d06f674
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/319421
Reviewed-by: Alexander Thomas <athom@google.com>
Auto-Submit: Oleh Prypin <oprypin@google.com>
Commit-Queue: Oleh Prypin <oprypin@google.com>
2023-08-09 11:23:19 +00:00
Oleh Prypin
9f0f33c676 Revert "[analyzer] simplify the libraries.dart file"
This reverts commit 1948b0a9fe.

Reason for revert: causes `promiseToFuture` to become undefined - b/295129286

Original change's description:
> [analyzer] simplify the libraries.dart file
>
> Change-Id: I86bc196eaddd9a80c02f38c8d947d3c0f4c63394
> CoreLibraryReviewExempt: the sdk_library_metadata/libraries.dart is only used by the analyzer
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/317803
> Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
> Commit-Queue: Devon Carew <devoncarew@google.com>

Change-Id: I4810c408b996cefd46c0a40cc36818d34aa86071
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/319402
Auto-Submit: Oleh Prypin <oprypin@google.com>
Commit-Queue: Oleh Prypin <oprypin@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Alexander Thomas <athom@google.com>
2023-08-09 10:27:47 +00:00
Martin Kustermann
b11aec8f64 [vm] Change IL instructions to be more precise if instruction only lazy-deopts
TEST=ci

Change-Id: I5b46856dfde192779001abd8edaeb37890ca06af
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/319420
Reviewed-by: Slava Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2023-08-09 10:25:28 +00:00
Ömer Sinan Ağacan
605b5a2e61 [dart2wasm] Transform List factory calls to implementation class calls
This is mainly used in [1] to allow using unboxed int lists when a
factory type argument is `int`, which then allows inlining unboxed int
list `[]` and `[]=` and storing and loading `int` values unboxed.

This implementation is mostly a copy of VM's transformer with the same
name. However we can't reuse VM's pass as we do different
transformations in [1].

[1]: https://dart-review.googlesource.com/c/sdk/+/318680

Change-Id: I16c06fc2b2edb1a5498807fc5c0fee839c003965
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318921
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Ömer Ağacan <omersa@google.com>
Reviewed-by: Joshua Litt <joshualitt@google.com>
2023-08-09 09:31:59 +00:00
Aske Simon Christensen
3df48faff1 [wasm_builder] Fix failure type of br_on_cast[_fail]
The Wasm validation rules state that the failure type is sharpened to
non-nullable if the cast target type is nullable.

Change-Id: I77596c31ea7443c5dace543d13024262879a5fb5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318660
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Joshua Litt <joshualitt@google.com>
2023-08-09 08:24:37 +00:00
Martin Kustermann
0d44ee8452 [vm] Remove PortMap state concept, expose isolate main control ports in service
TEST=ci

Change-Id: I18281c5ac05272596fe46baa75e8ec930f6099d4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318925
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2023-08-09 06:01:55 +00:00
Parker Lougheed
1b8870bbb1 [analyzer] Don't generate error codes for removed diagnostics
Also renames 'removed' to 'removedIn' to better indicate it is looking for a version, not a boolean.

Change-Id: If3a6708ba32460305e89ba59c4a58ce2ad284e6a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/319282
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2023-08-09 04:08:23 +00:00
Konstantin Shcheglov
1e12b09a59 Extension types. Report conflicts for members from superinterfaces.
Change-Id: I4bc513102f734a98a263dffd97c5d93874ef3ae1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318803
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2023-08-08 23:23:13 +00:00
Kallen Tu
1f88336597 [analyzer] Move all constructor error reporting to _InstanceCreationEvaluator.evaluate
Pull the error handling outwards to _InstanceCreationEvaluator.evaluate. All errors in const constructors should point to the location of the actual exception and provide more context.

Change-Id: Iafcf46182fab698f5546c63780de6dd9a605a51b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318802
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Kallen Tu <kallentu@google.com>
2023-08-08 21:55:34 +00:00
Keerti Parthasarathy
155bfc973b Add support for sort imports to BulkFixProcessor, add prefer_generic_function_type_aliases to list of lints for lightweight mode.
Change-Id: Ic8a1afde5f35a65065dd8439a11c4d99846c2905
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/319240
Commit-Queue: Keerti Parthasarathy <keertip@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2023-08-08 21:10:54 +00:00
Devon Carew
1948b0a9fe [analyzer] simplify the libraries.dart file
Change-Id: I86bc196eaddd9a80c02f38c8d947d3c0f4c63394
CoreLibraryReviewExempt: the sdk_library_metadata/libraries.dart is only used by the analyzer
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/317803
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
2023-08-08 21:00:01 +00:00
Konstantin Shcheglov
36c578f75c Extension types. Report when has representation self reference.
Change-Id: I729515f92c4c31530b61c7f9d71507fbf922787d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/319180
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2023-08-08 20:39:40 +00:00
Konstantin Shcheglov
5930cd6d55 Extension types. Report TYPE_PARAMETER_SUPERTYPE_OF_ITS_BOUND when via extension type.
Change-Id: I79d77e251fc4107e8d8496f9b4baea4b8a2b8bf0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/319200
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2023-08-08 20:23:38 +00:00
Mayank Patke
c81711bdda [dart2js] Add runtime type check for await.
See https://github.com/dart-lang/sdk/issues/49396 for details.

Fixes: #50601
Change-Id: Ie89130cffe642b3e4935d7d02fe2e34f7fc8b12e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/316320
Commit-Queue: Mayank Patke <fishythefish@google.com>
Reviewed-by: Stephen Adams <sra@google.com>
2023-08-08 20:18:04 +00:00
Daco Harkes
585c34b4d1 [deps] rev native
`packge:native_assets_builder` had a number of breaking changes.
The most notable one: It now returns a data structure with a `success` boolean instead of throwing exceptions.

Also bumps Dart to 3.0 in Dartdev so we can use records.

Change-Id: Ic32d7c2dd58860883c10f42411b80e979df2a797
Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-mac-release-try,pkg-win-release-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318980
Auto-Submit: Daco Harkes <dacoharkes@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Hossein Yousefi <yousefi@google.com>
2023-08-08 19:32:30 +00:00
Srujan Gaddam
86eb49ac19 [dart:js_interop] Disallow user @staticInterop classes from subtyping most dart:_js_types types
Since user @staticInterop types are erased to JavaScriptObject, they
should only be able to subtype other types that are :> JavaScriptObject,
which are just JSObject and JSAny. Eventually all the other JS types
will move to extension types and we can remove this check.

Change-Id: If56b6770e141238b583937880ca87496780c8fac
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/316865
Reviewed-by: Joshua Litt <joshualitt@google.com>
Commit-Queue: Srujan Gaddam <srujzs@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2023-08-08 19:17:25 +00:00
Danny Tuppeny
1bae1b3dd5 [analysis_server] Don't produce fix-all-in-file fixes when there's no individual fix
Fixes https://github.com/dart-lang/sdk/issues/53021

Change-Id: I674430c5e01eaeaee7867e85795eca2250ec14f1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318840
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2023-08-08 18:20:39 +00:00
Hrishikesh Kadam
651a9ba155 Remove duplicate doc in Uri.encodeQueryComponent()
Closes https://github.com/dart-lang/sdk/pull/53125

GitOrigin-RevId: 74acce42f4b4a9cbdea63e4576b58f1d3209ea76
Change-Id: Id1a72303cd877d106ee8b86a1b8572b3f21ebc29
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318300
Reviewed-by: Lasse Nielsen <lrn@google.com>
Commit-Queue: Lasse Nielsen <lrn@google.com>
2023-08-08 18:11:51 +00:00
Paul Berry
9a3420f1d4 Flow analysis: fix field promotion within cascades of non-promotable targets.
Previously, flow analysis used a hack to make it easy to generate "why
not promoted" messages when the user tried to promote a non-promotable
field: it treated all field accesses as stable for the purpose of
assigning SSA nodes, but avoided promoting non-promotable fields by
setting the `_Reference.isPromotable` flag to `false`. So, for
instance, in the following code, both subexpressions `c.i` got
assigned the same SSA node, even though there's no guarantee that
`C.x` will return the same value each time it's invoked.

    class C {
      int? get i => ...;
    }
    f(C c) {
      if (c.i != null) {
        var i = c.i; // Inferred type `int?`
      }
    }

This mostly worked, since the SSA node assigned by flow analysis is
only used for promotion, and promotion is disabled for non-promotable
fields. However, it broke when the field in question was used as the
target of a cascade, because fields within cascades always had their
`_Reference.isPromotable` flag set to `true` regardless of whether the
corresponding cascade target is promotable. For example:

    class C {
      D? get d => ...;
    }
    class D {
      final E? _e;
      ...
    }
    class E {
      m() { ... }
    }
    f(C c) {
      (c.d)
        .._e!.m() // OK; promotes _e
        .._e.m(); // OK; _e is promoted now
      (c.d)
        .._e.m(); // OOPS, _e is still promoted; it shouldn't be
    }

See
`tests/language/inference_update_2/cascaded_field_promotion_unstable_target_test.dart`
for a more detailed example.

This CL removes the hack; now, when a non-promotable property is
accessed more than once, flow analysis assignes a different SSA node
for each access. As a result, the `_Reference.isPromotable` is not
needed, because non-promotable fields simply never have the chance to
be promoted (since every field access gets a separate SSA node, so
type checking one field access has no effect on others).

To preserve the ability to generate "why not promoted" messages, the
`_PropertySsaNode` class now contains a `previousSsaNode` pointer,
which links together the separate SSA nodes allocated for
non-promotable properties, so that they form a linked list. The "why
not promoted" logic traverses this list to figure out which promotions
*would* have occurred if the property had been promotable.

In order to make it efficient to create this linked list, the
`SsaNode` class also had to acquire a `_nonPromotableProperties` map,
which records the SSA node that was allocated the last time each
property was accessed.

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

Change-Id: I16a7b27f77c309bdccce86195a53398e32e8f75d
Bug: https://github.com/dart-lang/sdk/issues/52728
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318745
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2023-08-08 17:26:09 +00:00
Dom Jocubeit
f53a1f1cdd Correct example code in docs for DivElement class
Closes https://github.com/dart-lang/sdk/pull/53128

GitOrigin-RevId: 52d7b08f3b94439de5752655f06988f63ec24144
Change-Id: I8d87eacc961a7899509c8244f1a0efe4d9a9a8b1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318580
Reviewed-by: Srujan Gaddam <srujzs@google.com>
Commit-Queue: Srujan Gaddam <srujzs@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2023-08-08 17:25:35 +00:00
Konstantin Shcheglov
ed0544a43a Sort context messages by offset from low to high.
Change-Id: Ibedaff82eb8d5e3b6740c69b34736514289e93d6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/319060
Reviewed-by: Phil Quitslund <pquitslund@google.com>
2023-08-08 17:11:59 +00:00
Alexander Markov
fe7778291b [vm/aot/tfa] Share captured local variables among invocations
This is a step towards detaching bodies of closures/local
functions from the enclosing functions in TFA, so closures
could be analyzed separately.

Also, this change allows TFA to accumulate types of captured local
variables among all invocations.

On a large Flutter app, this change doesn't cause noticeable compilation
time or snapshot size changes.

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

TEST=pkg/vm/testcases/transformations/type_flow/summary_collector/control_flow.dart

Cq-Include-Trybots: luci.dart.try:vm-aot-linux-release-x64-try,vm-aot-mac-product-arm64-try
Change-Id: I785b15656df559a8cc80fcceea196b480ba7a91a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318021
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2023-08-08 16:35:10 +00:00
Anna Gringauze
67d752aa12 [ddc] Clean up expression compiler tests
- Allow running the tests with asserts enabled

- Allow running the tests in canary mode

- Unify common test code and remove duplication
   - merge expression_compiler/setup_compiler_options.dart
     into share_compiler_options.dart

   - Merge TestCompiler code from expression evaluation and
     expression compilation tests and move into
     expression_compiler/test_compiler.dart

   - Rename various TestDrivers so they have more descriptive names

- Remove 'golden' JS comparison tests from expression_compiler_test.dart
   - replace by evaluation tests where needed

Closes: https://github.com/dart-lang/sdk/issues/53145
Change-Id: Ic797fa4ee9bfa6b858b924be9f9a53fd10ae1448
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318080
Commit-Queue: Anna Gringauze <annagrin@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2023-08-08 16:21:31 +00:00
Alexander Markov
286e5761e3 [gardening] Skip slow vm/dart/awaiter_stacks/sync_async_start_pkg_test_test on hot reload bots
This test is flaky and timing out on hot reload bots.

Change-Id: If0c9574ac80405d14765e4ada4fdee8e6bce9d79
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/319001
Reviewed-by: Alexander Aprelev <aam@google.com>
Auto-Submit: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2023-08-08 15:40:49 +00:00
Ömer Sinan Ağacan
e61c6dc620 [dart2wasm] Improve wasm:class-id pragma error messages
Change-Id: Id9d073557738548d41e6fd90d8973d8e5d5c0748
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318920
Reviewed-by: Joshua Litt <joshualitt@google.com>
Commit-Queue: Ömer Ağacan <omersa@google.com>
2023-08-08 15:39:27 +00:00
Ömer Sinan Ağacan
b53e0b31ca [dart2wasm] Fix Wasm{Int,Float}Array.fill value types
Change-Id: I8eb8a8a547a77e416b73b44d5fb0c91e24dff17e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318924
Reviewed-by: Joshua Litt <joshualitt@google.com>
Commit-Queue: Ömer Ağacan <omersa@google.com>
2023-08-08 15:27:37 +00:00
Danny Tuppeny
b6e7b7e536 [analysis_server] Expose additional LSP handlers over legacy protocol
Change-Id: I8aae887eba3d35f8086b62f2e9b861e17e41555e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318983
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2023-08-08 15:21:53 +00:00
Jess Lally
700c7e3b3f [dart2wasm] Remove Closures dependency on CodeGenerator
Change-Id: Ie18bdc704ca8a3459bde1bd27e8ed7866239b737
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318942
Reviewed-by: Ömer Ağacan <omersa@google.com>
Commit-Queue: Jess Lally <jessicalally@google.com>
2023-08-08 14:54:43 +00:00
Johnni Winther
6b5c722712 [cfe] Update ast-to-text for extension type declarations
Includes a fix for the serialization of the representation name found
through the update of the ast-to-text.

TEST=existing

Change-Id: Id741d66d8f43b5dc1d5e79f967b9625579539404
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318941
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
2023-08-08 14:53:20 +00:00
Tess Strickland
51ae7c7b9d [benchmarks] Add verbose flag to FfiStructCopy benchmark suite.
Change-Id: I28ab6c85db3705224a59f80ea3c13a78a141c851
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318923
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Commit-Queue: Tess Strickland <sstrickl@google.com>
2023-08-08 11:59:29 +00:00
Martin Kustermann
06b2967188 [vm] Disentagle PortMap/MessageHandler from port status tracking
The main purpose of the low-level [PortMap] is to coordinate between
ports being opened & closed and concurrent message senders. That's the
only thing it should do.

Each isolate owns [ReceivePort]s. Only the isolate mutator can create
ports, delete them or change their "keeps-isolate-alive" state. Right
now it requires going via [PortMap] (which acquires lock) and
[MessageHandler] (which acquires lock) to change the
"keeps-isolate-alive" state of a port.

We'll move information whether a dart [ReceivePort] is closed and
whether it keeps the isolate alive into the [ReceivePort] object itself.

=> Changing the "keeps-isolate-alive" state of the port no longer
requires any locks. We could even avoid the runtime call itself in a
future CL.

Isolates are kept alive if there's any open receive ports (that have not
been marked as "does not keep isolate alive"). This is a property of an
isolate not of the message handler. For native message handlers we do
have a 1<->1 correspondence between port and handler (i.e. there's no
"number of open ports" tracking needed).

=> We'll move the logic of counting open receive ports and ports that
keep the isolate alive to the [Isolate].
=> We'll also remove locking around incrementing/decrementing or
accessing the counts.
=> The [IsolateMessageHandler] will ask the [Isolate] whether there's
any open ports for determining whether to shut down.
=> For native ports, the `Dart_NewNativePort()` & `Dart_CloseNativePort()`
functions will manage the lifetime (as their name also suggests).

Overall this makes the [Isolate] responsible for creation of dart
[ReceivePort]s and tracking whether the isolate should be kept alive:
  * Isolate::CreateReceivePort()
  * Isolate::SetReceivePortKeepAliveState()
  * Isolate::CloseReceivePort()

TEST=ci

Change-Id: I847ae357c26254d3810cc277962e05deca18a1de
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/317960
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2023-08-08 10:57:47 +00:00
Martin Kustermann
86adabe0ef [vm] Relax assertion: Allow nested acquires of locks after acquiring safepoint operation
If a thread owns a lock already before acquiring the safepoint
operation, it can re-acquire the same lock inside the safepoint
operation (as it's a NOP and canoot lead to deadlocks).

TEST=ci

Change-Id: I4a7c3526683e09d4408d97aca9e9b59d6ca53d19
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318662
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2023-08-08 10:17:36 +00:00
Johnni Winther
b6409c0f04 [cfe] Check superbounded extension types
Closes #53139

Change-Id: I2f13d77454e2a7bac70d19afa1fb321815aac3bc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318641
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2023-08-08 09:13:51 +00:00
Martin Kustermann
a11de5a81b [vm] Initialize state of a port in PortMap on creation
All uses of `PortMap::Create()` would call `PortMap::SetPortState()`
after creating the port. To avoid acquiring the port map lock twice, we
can initialize the state already in `PortMap::Create()`.

Additionally we fix an existing issue by making the isolate's main port
a control port (instead of leaving it as a `kNewPort`).

As a side-effect we'll no longer have any allocated ports with state
`kNewPort`.

We also remove the unused `PortMap::IsLocalPort()`

TEST=ci

Change-Id: I6198792a8e1132580b60262f10a807c5b12f9eaf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/317680
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2023-08-08 08:13:00 +00:00
Robert Nystrom
d6b9e42f2e Update CHANGELOG to clarify there are no language changes.
Change-Id: I4a722ab4b78ffcc751d04e0b06ba879093ee6b02
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318749
Commit-Queue: Leaf Petersen <leafp@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
Auto-Submit: Bob Nystrom <rnystrom@google.com>
2023-08-07 23:33:45 +00:00
Konstantin Shcheglov
7d83540366 Extension types. Report an error for instance fields in extension types.
Change-Id: I35cb446c45e027a77d0a5ff870b4e5b4b22b7512
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318747
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2023-08-07 22:39:55 +00:00
Konstantin Shcheglov
b4164b956f Extension types. Test for invoking (old) extension methods on extension types.
Change-Id: I7da853dbfa4b24b578ba1eb1a9999e8582c63016
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318748
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2023-08-07 22:04:19 +00:00
Konstantin Shcheglov
33736cab48 Extension types. Report when used in extends, implements, with, on clauses.
Change-Id: I84effd787ce6405140beae13662f3255fd929012
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/318744
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2023-08-07 21:00:04 +00:00