Commit Graph

79322 Commits

Author SHA1 Message Date
Daco Harkes f820f7ce48 [vm/ffi] Exercise unaligned reads/writes
This CL validates the hypothesis that the only misaligned reads/writes
which are not supported are double and float, and only on arm32.

Running these on the CI and Golem will validate this hypothesis.

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

Change-Id: I0a77fd1f47a388d1f454c1ded50cd7ecaeadb0f0
Cq-Include-Trybots: luci.dart.try:dart-sdk-linux-try,dart-sdk-mac-try,dart-sdk-win-try,vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64-try,vm-kernel-asan-linux-release-x64-try,vm-kernel-mac-debug-x64-try,vm-kernel-linux-debug-ia32-try,vm-kernel-linux-debug-x64-try,vm-kernel-nnbd-linux-debug-x64-try,vm-kernel-nnbd-linux-debug-ia32-try,vm-kernel-nnbd-mac-release-x64-try,vm-kernel-nnbd-win-debug-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-debug-simarm_x64-try,vm-kernel-precomp-nnbd-linux-debug-x64-try,vm-kernel-precomp-win-release-x64-try,vm-kernel-reload-linux-debug-x64-try,vm-kernel-reload-rollback-linux-debug-x64-try,vm-kernel-win-debug-x64-try,vm-kernel-win-debug-ia32-try,vm-precomp-ffi-qemu-linux-release-arm-try,vm-kernel-precomp-obfuscate-linux-release-x64-try,vm-kernel-msan-linux-release-x64-try,vm-kernel-precomp-msan-linux-release-x64-try,vm-kernel-precomp-android-release-arm_x64-try,analyzer-analysis-server-linux-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190523
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2021-03-16 20:17:31 +00:00
Sam Rawlins 18bc70b898 Remove unnecessary imports from compiler/test
Bug: https://github.com/dart-lang/sdk/issues/44569
Change-Id: Iacb5553755af38e931431cb5aa4e3495cd34539f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190602
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2021-03-16 19:44:10 +00:00
Sam Rawlins 766791bb7d Remove unnecessary imports from compiler/lib
Bug: https://github.com/dart-lang/sdk/issues/44569
Change-Id: Iaec46afafca5dece288d4d36640a164eb2458a66
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190601
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2021-03-16 19:36:39 +00:00
Konstantin Shcheglov fd92cd4ce1 Add Expression.inConstantContext to API.
Change-Id: I13f96d2123e96eea11ccdcef2bb9a301a8afd26a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191441
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-16 19:28:30 +00:00
Danny Tuppeny 44275c6001 [Analyzer] Add support for LSP experimental SnippetTextEdit
Change-Id: Id37a1954c71fb10c4968c5af6a873ad0ef864a5a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191403
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-16 18:40:50 +00:00
Paul Berry 217cd49aaf More "why not promoted" test cases for for-in loops
Bug: https://github.com/dart-lang/sdk/issues/44898
Change-Id: Iea44cd482f21ef4406b28e264046025ce3f87695
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191385
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-03-16 17:22:33 +00:00
Paul Berry 9478b71000 Create a tool for extracting resources from resources.g.dart.
This should be helpful in debugging minified stacktraces reported for
the migration tool, such as #45326.

Bug: https://github.com/dart-lang/sdk/issues/45326
Change-Id: I44c697cfdfd6a06e8af3a2592321a1e9156ca929
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191380
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-03-16 17:21:08 +00:00
Sam Rawlins 82d16bd715 analyzer: Remove dynamic call from checker
I managed to remove 2 of ~5 calls to _elementType, as the argument
type was known to have a property, `.type`. I removed the null check
from the function, as it never needed to be used; the argument should
always be non-null. Two calls then require null checks, but this does
not change behavior, because null was never passed in there; `dynamic`
would have been returned then, and cast to FunctionType, which would
have failed.

Change-Id: I9b93a11e60e20a99ba8df4b5677e4c5796a49fcc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191384
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2021-03-16 17:14:27 +00:00
Aske Simon Christensen c49ec127fd [kernel] Implement visitExtensionReference in VisitorThrowingMixin
Change-Id: I472aaae83b360c31edfc29e8c47e9885a72779f4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191405
Auto-Submit: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2021-03-16 17:13:03 +00:00
Paul Berry 9d395f82cf Sort declarations in migration.dart
Change-Id: Id3d76e47c8c635131a767af0accd19d313296a26
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191382
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-03-16 17:06:22 +00:00
William Hesse e900b9c090 [infra] Fix default path to git directory when running GN
This should fix the tools/get_dot_git_folder.py script when
running the Debian package build from a source tarball.

Change-Id: I703fa34bbb6c73763c385e7d05b130091a131ade
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191401
Reviewed-by: Jens Johansen <jensj@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
2021-03-16 16:58:49 +00:00
Kallen Tu 00b6a815d9 [cfe] AbortStatus in statement executor for constants.
Change-Id: I96d5a7bc7aed69898e2c8bf048aeadf3b02387c6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191100
Reviewed-by: Jake Macdonald <jakemac@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Kallen Tu <kallentu@google.com>
2021-03-16 15:56:51 +00:00
Jacob MacDonald 3f5384bd08 Roll dart_style 2.0.0 into the repo.
There are no formatting changes aside from adding support for generic
metadata annotations, which are not yet used. Changes are:

- Migrated to null safety.
- Return exit code from FormatCommand.run().

Change-Id: I8892f6551541f673b8e49045665e2371ba40b026
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191182
Commit-Queue: Jake Macdonald <jakemac@google.com>
Reviewed-by: Nate Bosch <nbosch@google.com>
2021-03-16 15:22:21 +00:00
Tess Strickland 901fed103b [vm] Use the cached number of parent type args in FunctionType.
Also ensure the number of parent type arguments is appropriately
adjusted in the returned FunctionType when partially instantiating
a FunctionType, and that free parent type arguments are _not_
included in types built while reading constants.

Since the number of parent type arguments is now cached there, we
no longer need to also cache them in ClosureData. We can also remove
the parent walking in Function::NumParentTypeArguments().

Previously, a FunctionType where the component types did not use
parent type parameters was considered instantiated. This CL changes
it so that FunctionType with free parent type parameters are never
considered instantiated. This is necessary because otherwise,
when instantiating the parent type parameters, a FunctionType that
does not use its parent type parameters will be used unchanged
instead of creating a copy with fewer parent type parameters.

Because of this, places where IsInstantiated was used to simply
check for generic parent functions (namely, for implicit closure
creation) has been appropriately weakened to check
!HasGenericParent() instead.

TEST=Existing tests on CI.

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-linux-product-x64-try,vm-kernel-precomp-nnbd-linux-release-x64-try
Change-Id: Ifb4a0a1273d8d01908cdf4ffc3c4c28a1c33ffa0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190021
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Tess Strickland <sstrickl@google.com>
2021-03-16 15:04:51 +00:00
Jens Johansen fd89f1176b [parser] Test for (already fixed) issue 45327
The crash reported in #45327 was already fixed, but for good measure
we'll add the provided examples as tests.

Change-Id: I74f3b78b8644712322d0fb582bbbbde291a8994e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191366
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2021-03-16 14:45:00 +00:00
Jens Johansen 1b3f6d8f9e [infra] Make worktrees work (again?) (2nd try)
History:

* Back in (pre June) 2018 worktrees in git just worked.
* https://dart-review.googlesource.com/c/sdk/+/48091 made it not work.
* https://github.com/dart-lang/sdk/issues/33619 was filed.
* https://dart-review.googlesource.com/c/sdk/+/127485 was created to
  work around the problem.

I don't know when it happened, but I can't make the above workaround
work (at least not anymore) --- adding a `default_git_folder` to my
`args.gn` has no effect.

This CL builds on it and automatically sets the correct path based on
a call to `git rev-parse --resolve-git-dir .git` which gives the
correct dir for both worktrees and non-worktrees.

This is the 2nd try which should also work on Windows.
The original CL is in patchset #1.

This reverts commit 7e2cc73da8.

Change-Id: I298aef8ac9095ce3ef4f827218675584b68a02c2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191362
Reviewed-by: William Hesse <whesse@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2021-03-16 12:32:55 +00:00
Jonas Termansen 88c24ef66a Roll benchmarks-internal 354c978979c5..076df10d9b77
076df10d9b77af337f2d8029725787155eb1cd52 https://dart-internal-review.googlesource.com/c/benchmarks-internal/+/2420

R=whesse@google.com

Change-Id: If5f6df4d2e539aa28b77cad972e710297542bafe
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191363
Auto-Submit: Jonas Termansen <sortie@google.com>
Commit-Queue: William Hesse <whesse@google.com>
Reviewed-by: William Hesse <whesse@google.com>
2021-03-16 10:27:18 +00:00
Lasse R.H. Nielsen b250a58d8e Implement int.>>> for DDC.
BUG= https://github.com/dart-lang/sdk/issues/44915

Change-Id: Ia63d1653729ff458f9ebb2a2e33883a00a66378f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191220
Reviewed-by: Nicholas Shahan <nshahan@google.com>
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
2021-03-16 09:37:15 +00:00
Jens Johansen 7e2cc73da8 Revert "[infra] Make worktrees work (again?)"
This reverts commit a531b78369.

Reason for revert: Doesn't work on Windows.

Original change's description:
> [infra] Make worktrees work (again?)
>
> History:
>
> * Back in (pre June) 2018 worktrees in git just worked.
> * https://dart-review.googlesource.com/c/sdk/+/48091 made it not work.
> * https://github.com/dart-lang/sdk/issues/33619 was filed.
> * https://dart-review.googlesource.com/c/sdk/+/127485 was created to
>   work around the problem.
>
> I don't know when it happened, but I can't make the above workaround
> work (at least not anymore) --- adding a `default_git_folder` to my
> `args.gn` has no effect.
>
> This CL builds on it and automatically sets the correct path based on
> a call to `git rev-parse --resolve-git-dir .git` which gives the
> correct dir for both worktrees and non-worktrees.
>
> Change-Id: I4dcf0445a44348621752fb88d4dab4c99c6ddd1d
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190522
> Reviewed-by: Sigmund Cherem <sigmund@google.com>
> Reviewed-by: William Hesse <whesse@google.com>
> Commit-Queue: Jens Johansen <jensj@google.com>

TBR=whesse@google.com,rmacnak@google.com,jensj@google.com,sigmund@google.com

Change-Id: I7681a7b48abdd6e5901f1e445015adc9bf51ef77
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191361
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2021-03-16 09:18:50 +00:00
Jens Johansen a531b78369 [infra] Make worktrees work (again?)
History:

* Back in (pre June) 2018 worktrees in git just worked.
* https://dart-review.googlesource.com/c/sdk/+/48091 made it not work.
* https://github.com/dart-lang/sdk/issues/33619 was filed.
* https://dart-review.googlesource.com/c/sdk/+/127485 was created to
  work around the problem.

I don't know when it happened, but I can't make the above workaround
work (at least not anymore) --- adding a `default_git_folder` to my
`args.gn` has no effect.

This CL builds on it and automatically sets the correct path based on
a call to `git rev-parse --resolve-git-dir .git` which gives the
correct dir for both worktrees and non-worktrees.

Change-Id: I4dcf0445a44348621752fb88d4dab4c99c6ddd1d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190522
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: William Hesse <whesse@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2021-03-16 08:54:15 +00:00
Alexander Markov e8f57b6605 [vm/aot] Handle FieldInitializer pointing to a Field's Reference which is reused for a getter
This is a follow-up to https://dart-review.googlesource.com/c/sdk/+/186680.
After that change, tree shaker started reusing Reference to a Field
when it is replaced with a getter. As a side-effect, this makes
FieldInitializer.field to crash as Reference is now pointing to Procedure,
not a Field.

The fix is to carefully use 'node.fieldReference.asMember' instead of
'node.field' and then retrieve original Field node if it was replaced
with a getter.

TEST=pkg/vm/testcases/transformations/type_flow/transformer/regress_45324_2.dart
Fixes https://github.com/dart-lang/sdk/issues/45324

Change-Id: Ic34e8b9933b00997cd350a4ad93f798c86ac60ad
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191323
Auto-Submit: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2021-03-16 05:43:34 +00:00
Sam Rawlins 1cb203d8c9 Remove unused code and files from analysis_server:
* ManifestFixKind, PubspecFixKind, ImportElementInfo class
* WithNullSafetyMixin mixin
* suggestionComparator function

Change-Id: I9e332be6345b2f2b7b788bc4ae63a075a21cbe06
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190821
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2021-03-16 05:08:24 +00:00
Alexander Aprelev 3162957a78 [gardening] Add explicit type to ensure templated function applies.
Follow-up to d42de4ed06

TEST=build engine ios_debug_arm target

Change-Id: I7f86f74467c7e7ed05feddfce921b46f05586e68
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191326
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2021-03-16 04:34:44 +00:00
Ryan Macnak 829ef92778 [vm] Expand compressed heap to 4GB.
We originally sized the compressed heap at 2GB to avoid implementing alignment offsets. (When decompression is sign-extension + base, base should be the middle of a 4GB-aligned region.) After 8db0a975c1, the needed alignment offset is zero, and we no longer need to avoid the high bit being set.

TEST=ci
Change-Id: Ib6e6c40bcb9638e01867edd527b3acaaccec570b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191321
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Liam Appelbe <liama@google.com>
2021-03-16 01:27:24 +00:00
Ryan Macnak 2472db0031 [vm] Inform the OS that it can reclaim free'd portions of the compressed heap.
TEST=ci
Change-Id: I26c5963d5d3596f95d3089b1dadc482bd2182543
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191301
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Liam Appelbe <liama@google.com>
2021-03-16 00:12:54 +00:00
Anna Gringauze e2baf16ebd Support ddc module format in expression compilation in ddc.
Closes: https://github.com/dart-lang/sdk/issues/45303
Change-Id: I2b1eb9d149c03c138150d126c108ad86af8584c6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191023
Reviewed-by: Nicholas Shahan <nshahan@google.com>
Reviewed-by: Gary Roumanis <grouma@google.com>
Commit-Queue: Anna Gringauze <annagrin@google.com>
2021-03-15 23:58:44 +00:00
Alexander Aprelev 8e7c8c9d8b Roll icu dependency to 81d656878ec611cb0b42d52c82e9dae93920d9ba.
Last roll was from 6/18/2020.
Allows to enable "implicit-int-float-conversion" warning in the dart codebase.

Change-Id: Ida1a3a477e5bc45993dc10e0c3db410265a005ba
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191300
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2021-03-15 23:50:04 +00:00
Konstantin Shcheglov 6b575c72ec Prepare to publish analyzer 1.2.0 and _fe_analyzer_shared 18.0.0.
Change-Id: If31ece2507cfb012d5742aa147df2ca781b4f712
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191303
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Janice Collins <jcollins@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2021-03-15 22:58:54 +00:00
Konstantin Shcheglov c0b800ceb5 Issue 45318. Check for dynamic bounded and Function bounded.
Bug: https://github.com/dart-lang/sdk/issues/45318
Change-Id: I5abd2d237cc3a56551471c2a2fc7a9965eb4223c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191181
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-15 22:50:14 +00:00
Alexander Markov daae24b488 [vm/aot] Retain fields used in constants
Evaluated constant instances in kernel are represented as a list of
field->value pairs. Tree shaker should not remove fields used in
constants as it may potentially affect identity of constant instances
(non-identical constants may become identical).
Previously, fields used in constants were only marked as written,
so they could still be removed as write-only fields.
Furthermore, if such field was also used as an interface target
it could be converted to an abstract getter, causing the conflict
during kernel AST serialization.

This fix marks fields used in constants as also read, effectively
preventing their tree shaking.

Flutter gallery AOT snapshot size is not affected.

TEST=pkg/vm/testcases/transformations/type_flow/transformer/regress_45324.dart
Fixes https://github.com/dart-lang/sdk/issues/45324

Change-Id: Id6d35604757ad6ba1e23f7227aa9b769448c2688
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191280
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2021-03-15 21:50:11 +00:00
Konstantin Shcheglov 369c36e67c Issue 45299. Fix yield type check for function expressions.
Bug: https://github.com/dart-lang/sdk/issues/45299
Change-Id: I0f9477a632b635d7e1ac8d4c51f51254e5058cff
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191183
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-15 21:26:44 +00:00
Ryan Macnak c9e10c931c [vm, compiler] Predicate boolean loads.
TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/29908
Change-Id: I5a5c57a8a79dbe4f2ee5303a4b9436bd36e8d7be
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189921
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2021-03-15 20:53:04 +00:00
Danny Tuppeny cf3dcc4256 [analyzer] Prevent MOVE_FILE using absolute URIs when moving files out of lib
Fixes part of https://github.com/dart-lang/sdk/issues/41889, maybe part of https://github.com/dart-lang/sdk/issues/43602.

Change-Id: Ic7a1e81a280e9786e26f0075ea079e0136e934b0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191142
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-15 18:42:44 +00:00
Kallen Tu c906133967 [cfe] Multi-call const function tests to existing behavior.
Change-Id: Id03250e5eeb38d9c69b629c239e573a1d838820f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190980
Reviewed-by: Jake Macdonald <jakemac@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Kallen Tu <kallentu@google.com>
2021-03-15 18:09:13 +00:00
Alexander Markov 16beb34813 [vm/aot] Remove special cases of dynamic function lookups from precompiler
Flutter gallery AOT snapshot size
release: no change;
release-sizeopt: arm -0.24%, arm64 -0.25%.

TEST=ci
Issue: https://github.com/dart-lang/sdk/issues/44852
Change-Id: I847bfc311552bb4e80222e0040b50b4766a18dbe
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190783
Reviewed-by: Tess Strickland <sstrickl@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2021-03-15 17:53:23 +00:00
Brian Wilkerson 55522f9e90 Fix a bug in completion when a setter does not have a corresponding getter
Fixes: https://github.com/dart-lang/sdk/issues/45300
Change-Id: I0a5043b5d395abb426615e8c434f23c20062e182
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191180
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-15 17:34:53 +00:00
Vyacheslav Egorov d42de4ed06 [vm] Crash on impossible GDT null errors
This CL adds code to detect situations when we hit
null error through GDT call with non-null receiver.

We achieve this by making receiver's cid part of the
GDT calling convention and checking this cid
in runtime entry responsible for throwing the null
error.

This CL is an attempt to narrow down b/179632636
and collapse various impossible crash reports
into a single native crash cluster by crashing VM
instead of throwing a null error.

TEST=tested manually

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-linux-release-simarm-try,vm-kernel-precomp-linux-release-simarm64-try
Change-Id: If2ed4646c4c0f403016266e4e83e296a7b234cb5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191141
Auto-Submit: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2021-03-15 15:35:10 +00:00
Vyacheslav Egorov 69ec09825a [vm] On Android set abort message before aborting
Android L and newer (API level 21) provides a way to
specify abort message which will be included into
crash report created by debuggerd.

Make sure our DynamicAssertionHelper uses this functionality
if available.

TEST=tested manually

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-android-release-arm64-try,vm-kernel-mac-release-x64-try
Change-Id: If25cd168d43677e0a0fe9b63e21a017415686ab7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191140
Auto-Submit: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2021-03-15 15:35:10 +00:00
Dmitry Stefantsov d6b79dab6c [cfe] Correct argument count in extension member errors
Closes #45204.

Bug: https://github.com/dart-lang/sdk/issues/45204
Change-Id: I5295704a8d470e639fe346dbbbf80ad28ff614a6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190520
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2021-03-15 10:46:00 +00:00
Jens Johansen b5da327ed9 [parser] Parse and skip metadata according to spec
Make the parser handle metadata properly according to the spec.

There has been some confusion in regards to metadata because
https://github.com/dart-lang/language/blob/master/accepted/future-releases/small-features-21Q1/feature-specification.md
(used to) say we needed a spec update.

That was done in the parser in
https://dart-review.googlesource.com/c/sdk/+/182668
but really that made the parser adhere to the spec as it was which is
also correct (as the spec change wasn't needed at all).

The parser also needs to be able to skip metadata, though, and that
wasn't done it that CL which caused the issues in
https://github.com/dart-lang/sdk/issues/45120

The work directly in this CL is:
* Add lots of comments to parseMetadata to make them more up-to-date with
  the spec.
* Fix skipMetadata to correspond to parseMetadata.
* Tests verifying that 45120 is fixed in the parser and that metadata in
  general works as expected in the parser.

(In working on this, the future specification was corrected to say that the
spec did not need updating. Thanks to Erik for the quick turn-around
there).

Bug: #45120
Change-Id: Id1e4912cac7e5d9113efe083b3ecd06e6834a16e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190880
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2021-03-15 08:40:40 +00:00
Tess Strickland dc62c9c3c2 [vm/compiler] Write retained reasons JSON to a file.
Instead of being part of the --trace-precompiler output, there is
is a new flag --write-retained-reasons-to=<path>.

To allow for non-functions to have reasons for retention, the
JSON objects in the array now have one additional field:

* type: a string, the C++ type of the Dart object.

This CL also wraps all the machinery in a RetainedReasonsWriter
class instead of putting it in the Precompiler interface.

TEST=vm/dart{,2}/use_trace_precompiler_flag

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-linux-product-x64-try,vm-kernel-precomp-nnbd-linux-release-x64-try
Change-Id: Ifa40ac64fdcbdad5114499425c7f8b08e327fa76
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190525
Commit-Queue: Tess Strickland <sstrickl@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2021-03-15 08:37:40 +00:00
Alexander Markov 11d6203130 [vm/aot] Fix retaining of exception types and auxiliary functions
There are two fixes:

1) If a function was compiled but not retained, precompiler
should still trace through types used in exception handlers.

2) Certain auxiliary functions such as implicit closure functions
and field initializers were added to 'possibly_retained_functions_'
set but were not traced through AddTypesOf and were not added to
'functions_to_retain_' set.

Flutter gallery AOT snapshot size
release - no changes
release-sizeopt arm +0.13%, arm64 +0.14%

TEST=ci
Fixes https://github.com/dart-lang/sdk/issues/45179
Issue https://github.com/dart-lang/sdk/issues/44852

Change-Id: Ide9a7e82a7bb9098dc90bc41a76e527e7a5cb603
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190781
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Tess Strickland <sstrickl@google.com>
2021-03-13 00:30:38 +00:00
Kallen Tu a7e5965495 [cfe] If statements for const functions.
Change-Id: If4449eb6613c7a2b53119ed2e8d3f3042624ccd1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190800
Commit-Queue: Kallen Tu <kallentu@google.com>
Reviewed-by: Jake Macdonald <jakemac@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2021-03-12 21:09:08 +00:00
Dmitry Stefantsov 8ddc7465a8 [cfe] Move ExtensionType into pkg/kernel/lib/ast.dart
Change-Id: I2e8231dad00accafb09d1ec88416242d3d5815a4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190483
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2021-03-12 19:02:27 +00:00
Anna Gringauze cf7e990233 Add default value for module format in ExpressionCompilerWorker
Current version of dwds does not supply module format to the
expression compiler worker, resulting in initialization failures.
Add default 'amd' format so dwds continues to work with new SDK
version before a matching update that passes format to dwds
lands.

Change-Id: I10e8ddc09b48b91c9c085a6d7579ad01c6e13399
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190820
Reviewed-by: Gary Roumanis <grouma@google.com>
Reviewed-by: Nicholas Shahan <nshahan@google.com>
Commit-Queue: Anna Gringauze <annagrin@google.com>
2021-03-12 18:37:07 +00:00
Ben Konyi 4fde29d1aa [ CLI ] Poll for VM service URI before launching DDS
Service.getInfo().serverUri can be null if the VM service server hasn't
finished starting up. The CLI isolate should wait for this URI to not be
null before attempting to start DDS.

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

Fixed: 44787
Change-Id: Iadce0901351c0bc5238a4dc805483cce818e9e15
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190361
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
2021-03-12 18:34:08 +00:00
Konstantin Shcheglov 60ea845795 Issue 190731. Support for aliasElement/aliasArguments in TypeParameterType.
Bug: https://github.com/dart-lang/sdk/issues/45291
Change-Id: Ia0378722f0e7c48e7a3042c0ef14d6833c7bf2b9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190734
Reviewed-by: Janice Collins <jcollins@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-12 18:22:47 +00:00
Nate Bosch f54a76f9af Update to the latest package:test
Change-Id: Ia23a5ce61fff38d3d5066b26b7ce1cedbf99619e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190733
Auto-Submit: Nate Bosch <nbosch@google.com>
Commit-Queue: Gary Roumanis <grouma@google.com>
Reviewed-by: Gary Roumanis <grouma@google.com>
2021-03-12 18:14:37 +00:00
Konstantin Shcheglov 45e3d3c77f Issue 45291. Support aliasElement/aliasArguments for interface types.
Bug: https://github.com/dart-lang/sdk/issues/45291
Change-Id: I97bab24f4d7cf3232a0260ec3c6abec6a4c310be
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190731
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-12 17:06:17 +00:00
Konstantin Shcheglov 00a45e425a Remove build mode from analyzer_cli.
Change-Id: I2236c728741837588394f896b37f181fc907d335
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190726
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-12 17:05:37 +00:00