New commits included in this revision:
```
$ git log --pretty=oneline 4d8ecbd409d773fec47da33b7e6c8db0b51487fd..429a06039d185149f387a65e3503b0693ce6d24e
429a06039d185149f387a65e3503b0693ce6d24e (HEAD -> master, origin/master, origin/HEAD) Parallel fetching of available versions (#2280)
6705b085b9bf4754a4c8002a070f436f115dc4d1 Retry on all SocketExceptions (#2254)
a1820273b9f3c7bb5a13d26cd14d30d5bab187ae Use a unqiue file name for the snapshot during testing. (#2303)
72686563e767f8a359e48a267a2c323953a6a0ef Include osx and windows testing on Travis (#2299)
a7a66821d13920b9b22cc394dfa55c679e971e40 Fail travis for lints and warnings (#2301)
25aa24c023453f064dad8f3cce1bbd55269d0efa Omit languageVersion when there is no SDK constraint (#2300)
82e60a3dcb3afe753563e7d304827fb650bc4833 Use LOCALAPPDATA for system cache on windows (#2297)
ceaa86f2c7eb35f044b4c202268a17361de68d13 Enforce and fix lints from package:pedantic (#2291)
6ce1606564352c305bd0f6d97704f0f7f6ebbca0 Use more collection literals for args (#2293)
be245e6baeebb71aaf3b3a260fcfbbb011a9a7e0 Rename some test utilities from Mock to Fake (#2294)
f7638ce85298df7d9e73d717dd4d81f499681720 Refactor Set.add following !Set.contains (#2295)
390022b24bc076cb934385936ac7904f045a75ba Filter out `null` from `getCachedPackages`. (#2292)
0eea0c4421ed0b83c8597b62dacf68b93de172b9 Fix existing hints and lints (#2290)
7cf2fe860a40517ccb65f5efdda9e4dc350142c3 promote strict deps failures to errors from warnings (#2289)
```
Change-Id: I62782b29e16092114940df00811bfdd20c8045fa
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131839
Reviewed-by: Jonas Jensen <jonasfj@google.com>
Commit-Queue: Sigurd Meldgaard <sigurdm@google.com>
This reverts commit 5f81efb4a3.
Reason for revert: 3xH bot is green again.
Original change's description:
> Revert "[vm/aot] Only patch call-sites to monomorphic entry-points when the receiver is proven to be a heap object."
>
> This reverts commit ab2026af45.
>
> Reason for revert: Flutter 3xH is broken on Golem.
>
> Original change's description:
> > [vm/aot] Only patch call-sites to monomorphic entry-points when the receiver is proven to be a heap object.
> >
> > Flutter Gallery ARMv8: -0.8% total, -1.3% instructions
> > Flutter Gallery ARMv7: -0.7% total, -1.2% instructions
> >
> > There are some performance regressions, in four categories:
> >
> > 1. Arithmetic on num types (e.g. MinLib, MaxLib):
> > We believe arithmetic on num types is rare in practice, and can be optimized later
> > by specializing the call-sites.
> >
> > 2. Lack of types (e.g. MeshDecompression, ImagingGaussianBlur, Crypto*):
> > These (and similar benchmarks) are written in a very untyped style, which is not
> > representative of Dart 2 style. We've confirmed that the regressions disappear if
> > the benchmarks are annotated with appropriate types.
> >
> > 3. Megamorphic calls which are specialized in the benchmark (e.g. DeltaBlue):
> > DeltaBlue uses string interpolation in one place, so the toString() method in the
> > string interpolation helper is monomorphic for _Smis. However, in a realistic programs,
> > string interpolation is used much more frequently and with different types, so it's very
> > unlikely that this call would be monomorphic. When string interpolation is removed, there's
> > a remaining 1.3% regression on DeltaBlue which is not yet accounted for.
> >
> > 4. Noisy benchmarks
> > The remaining regressions are on benchmarks which show frequent jitter historically.
> >
> > There are also 1-4% improvements on many benchmarks (Golem's "noise" analysis is hiding
> > many of them, look at the graphs).
> >
> > For the reasons above, we believe the regressions justified by the code size improvement.
> >
> > Change-Id: Ic9b281d4383a6111de9d6f44347976ffa61a6ca6
> > Cq-Include-Trybots:luci.dart.try:vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-release-simarm-try,vm-kernel-precomp-linux-release-simarm64-try,vm-kernel-precomp-bare-linux-release-simarm64-try
> > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/128667
> > Commit-Queue: Samir Jindel <sjindel@google.com>
> > Reviewed-by: Ryan Macnak <rmacnak@google.com>
> > Reviewed-by: Martin Kustermann <kustermann@google.com>
>
> TBR=kustermann@google.com,rmacnak@google.com,alexmarkov@google.com,sjindel@google.com
>
> Change-Id: I411aae4b230f2a08146ad3bf3e7a10aa6592db0e
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-debug-x64-try, vm-kernel-precomp-linux-release-simarm-try, vm-kernel-precomp-linux-release-simarm64-try, vm-kernel-precomp-bare-linux-release-simarm64-try
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131660
> Reviewed-by: Samir Jindel <sjindel@google.com>
> Commit-Queue: Samir Jindel <sjindel@google.com>
TBR=kustermann@google.com,rmacnak@google.com,alexmarkov@google.com,sjindel@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Change-Id: I36e4e9d598033fcc934c2cdf5b061aa11255d3b2
Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-debug-x64-try, vm-kernel-precomp-linux-release-simarm-try, vm-kernel-precomp-linux-release-simarm64-try, vm-kernel-precomp-bare-linux-release-simarm64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131837
Reviewed-by: Samir Jindel <sjindel@google.com>
Commit-Queue: Samir Jindel <sjindel@google.com>
Running all existing tests with/without lazy async stacks ensures that
the existing functionality for --lazy-async-stacks does not regress.
There are still a few smaller things to be done in the debugger for lazy
async stacks.
This CL also ensures:
* The inner closure, i.e. AsyncClosure/AsyncGenClosure, is not
inlined if FLAG_lazy_async_stacks is on.
* Fixes a crash in dartkb mode, when the function of the Bytecode
object is null.
* Does a simple integration of the lazy async stacks in debugger.cc -
to ensure a stack is returned via vm-service.
Issue https://github.com/dart-lang/sdk/issues/37668
Change-Id: Ibc1e887a457e2c456ae65d9ed5fa92434f122a32
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131825
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
Sometimes, the batch runners need the experiment flags set. This is
especially true when running in NNBD mode which needs to be enabled in
the VM running the batch runner as well as in the test code.
Previously this was only done for the CFE batch runner, this CL moves
the logic to apply to all compilation commands using batch runners.
Change-Id: I9358ae7cfed4f082075ef91b59408edcb2912361
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131831
Reviewed-by: William Hesse <whesse@google.com>
Commit-Queue: Alexander Thomas <athom@google.com>
Change-Id: If19444e702a2b73a829bd9f581ff36ad041ecf41
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131801
Commit-Queue: Victor Agnez Lima <victoragnez@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Initially, this will just do the build. The dart2js team will add
testing in a separate CL.
Change-Id: If06fb6e639194a4c80d1f2a6f437c76d5bfc029f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131827
Commit-Queue: Alexander Thomas <athom@google.com>
Commit-Queue: William Hesse <whesse@google.com>
Auto-Submit: Alexander Thomas <athom@google.com>
Reviewed-by: William Hesse <whesse@google.com>
One minor issue remains: when dead code elimination causes a
collection to become empty, migration should insert explicit type
parameter(s) to ensure that the empty collection will still get
analyzed as having the right type. This is noted in TODO comments.
Change-Id: Ibed25f6cb8ed9eec3ddccb0444178960c6b35c84
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131843
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
This will be needed for the NNBD migration engine, so that when it
re-runs resolution to see what the types will be in migrated code, it
can tell the resolver to skip or modify collection elements to account
for dead code elimination.
The runtime overhead of this abstraction should be negligible, since
under normal analyzer operation, there will only be a single const
instance of this class, and no instances of any subclasses. So the VM
should be able to trivially inline all uses of the abstraction layer.
Also add SetOrMapLiteralImpl.becomeUnresolved(), which is used to
reset literals to the "unresolved" state before they are resolved.
This will be necessary so that when the migration engine re-resolves a
set or map literal, the determination of what kind of literal it is
will be made afresh.
Change-Id: Id8e95c944acb892c60d3d92a7facc20d08604211
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131842
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
The DDC bot is no longer triggered on changes to the analyzer package.
The analyzer team would naturally like to know if they are breaking this test so
it makes more sense to move it to their bot.
In a discussion with our team we opted to leave the test on our bot as well since
runs so quickly and makes it easier to notice errors earlier for some of our
workflows.
Change-Id: I0157fdc5a957239f432a448b546531487895da7d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131717
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Nicholas Shahan <nshahan@google.com>
Currently does not work for function and generic function types.
Type object equality ignores legacy modifiers but preserves other nullability
semantics. This scheme constructs the runtime type object (normalized) at runtime,
caching it if necessary. This avoids the space overhead of emitting canonicalized
normalized types at compile-time but incurs a cost when runtimeType is called
for the first time per recursive subtype.
See: https://github.com/dart-lang/language/blob/master/accepted/future-releases/nnbd/feature-specification.md#runtime-semantics
Change-Id: I76d714c5e618d77f334d90862bb7d3c9b0b8d305
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130727
Reviewed-by: Nicholas Shahan <nshahan@google.com>
Commit-Queue: Mark Zhou <markzipan@google.com>
Looks like we used to do this, but we stopped when we started changing
this pattern:
```
dynamic x = 1;
int y = x;
```
Our first iteration treated `dynamic` as nullable all the time. This is
not ideal in the example above. So we went back and instead began
treating `dynamic` as nullable only when it was observed to have a null
value.
However, in the case of unbounded type parameters:
```
class C<T> {}
```
We don't want to wait to observe:
```
C<Object> o = C(null);
```
before treating the bound as nullable.
Change-Id: I50b8ca6188d82cd62f795ada99a355afe2eae771
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131714
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Mike Fairhurst <mfairhurst@google.com>
Summary for /usr/local/google/home/jwren/github/collection:
Total number of completion tests = 11487
Number of successful completions = 9945 (86.6%)
Number of unsuccessful completions = 1542 (13.4%)
Change-Id: Ie53fdb3be7cac847ac1612a90b93c7eacd72f41d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131846
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Jaime Wren <jwren@google.com>
The `is!` check is causing test failures when null flows through as `value`.
There is still no type promotion in place to make this work without the cast.
`null is! int*` is true while `null as int*` is a safe cast.
Fixes runtime failures in:
- language_2/async/identifier_test
- language_2/await/and_ifnull_test
- language_2/invalid_returns/async_invalid_return_00_test/none
- language_2/invalid_returns/async_invalid_return_01_test/none
- language_2/invalid_returns/async_invalid_return_02_test/none
- language_2/invalid_returns/async_invalid_return_03_test/none
- language_2/invalid_returns/async_invalid_return_04_test/none
- language_2/invalid_returns/async_valid_returns_test
- language_2/regress/regress26668_test
- lib/async/future_foreach_test
- lib/async/futures_test
- lib_2/async/future_foreach_test
Change-Id: I25d0dfb10d558ef7c167f99d1fba11f379cd8815
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131719
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Commit-Queue: Nicholas Shahan <nshahan@google.com>
There were multiple builders using the same unittest-asserts-linux
configuration, which caused confusion on the results feed. Analyzer unit
tests will now use the analyzer-unittest-asserts configuration and
front-end builders will use the cfe-unittest-asserts configuration.
Other front-end builder configurations starting with fasta- are renamed
to start with cfe-.
Before landing this change, the results.json files on the builders will have
duplicate results, showing the current test results under the new configuration
names, added to them. This will avoid "new test" and "new failing test"
messages for the new configurations. These must be added to the results.json
on GCS that is picked up by the first new run, but can safely be added to
earlier ones on GCS as well.
Change-Id: I947814e8c82eef84f79334e6871f1cd3b1d8af0f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131821
Reviewed-by: Alexander Thomas <athom@google.com>
Instead of storing planIndex in the class (which makes it hard to
follow what methods are expected to update it, and consequently hard
to tell that _processPlans will process each plan exactly once), pass
it between _processPlans and _handleRemoveEditPlans so that it's
clearer how it is updated.
Change-Id: I1b03ad2b8bb0ae5e488d02827d2a4a56f37ede21
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131711
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
... and use it fix perf_test on Windows
`currentDirectory` is replaced by `Uri.base` (the former sounded more magical than it was!)
Change-Id: I5fb8dc5dba004ebad221d4b39d213d51964c5ea2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131622
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Everything in FFI is nonnullable, because C does not accept null values or return null values (nullptr == 0, not null).
The only thing that needed migration in the FFI api is operator == (dynamic other) --> operator == (Object other).
This CL does not migrate any tests as the VM cannot run any tests yet.
Fixes: https://github.com/dart-lang/sdk/issues/39144
Change-Id: I5efc772b61228bd1bd4d95be1b7bcd969f0c9ac8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131380
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
Also extend test to verify one can find expected instances through the
heap snapshot.
Change-Id: Ie4d83100b0702f6e0ceb7ae351b1d49d85d385a5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131066
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
Fixes the original CL by restoring files temporarily needed by Flutter (until cleaned
up on Flutter side).
Change-Id: I2561339c797e1d5168646e59782ca0fcd10d79af
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131582
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Vijay Menon <vsm@google.com>