Migrates syntax and semantics from python 2.7.
Major changes include:
- filters
- sorting
- print statements
- higher-order functions
- hashing and comparison
and other misc changes. go.sh consistently gives the libraries
in this and the previous commits with these changes.
Change-Id: I66365739887158d8f321015d36e556447da1bcd3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/211542
Commit-Queue: Srujan Gaddam <srujzs@google.com>
Reviewed-by: Riley Porter <rileyporter@google.com>
This is an initial step to get the modular analysis in place, it
includes:
* flag to emit modular data
* flag to load modular data
* new modular strategy that uses serialized modular data
* serialization of part of the modular data
- currently only impact-builder-data
* new flag in our modular test suite to play with the new feature. This
flag is off by default and will not be tested in the bots
unless we enable it by default or add a test matrix step for it.
(See original https://dart-review.googlesource.com/c/sdk/+/105702)
Change-Id: I951ab68567f907117a1e868aaf673841ae948484
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/210061
Commit-Queue: Joshua Litt <joshualitt@google.com>
Reviewed-by: Mayank Patke <fishythefish@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Using a set does not guarantee a consistent order from python 3
onwards, so use a OrderedDict to get a consistent order while
removing any duplicates.
Change-Id: I02d9aae2a82fd119f22b3a5e353b9445ffca963b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/211541
Commit-Queue: Srujan Gaddam <srujzs@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Riley Porter <rileyporter@google.com>
The compiler will in certain cases eliminate write barriers and the runtime will compensate by adding certain objects to a deferred marking stack. These objects will be revisited when marking is finalized. There is no header bit indicating an object has already been added to the deferred marking stack. The same object may be seen by markers multiple times: once as part of ordinary marking and several times as part of deferred marking.
When visiting a WeakProperty, if the fate of its key is not yet known, it is placed in a (worker-local) delayed weak properties list, which is a linked list threaded through the WeakProperties themselves. If more than one worker adds the same WeakProperty to its list, or a single worker does so multiple times, the lists will be corrupted. A previous fix (40cd5fc5f6) attempted to avoid this by ensuring only the worker which marked the WeakProperty would add it to a delayed weak properties list, but this can result in no worker adding the WeakProperty if the WeakProperty is allocated marked and added to the deferred marking stack.
This CL changes the processing of the deferred marking stack to treat WeakProperties as strong references. This ensures a WeakProperty will only be added to a delayed weak properties list by the single worker that encounters it during ordinary marking. This is also very similar to what would happen if the write barrier had not been eliminated: the writes into the marked WeakProperty would cause the new key and value to also become marked.
This CL also fixes another bug where when processing the delayed weak properties lists, the worker would try to ask whether a new-space object was marked.
TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/47128
Change-Id: Id9abaeb4dd52538ebc22ac58e48abcb7ed760854
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/212612
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
- dart:_builtin is only available in the standalone embedder, and should have never been referenced by the VM proper.
- dart:profiler was long ago renamed to dart:developer.
TEST=build
Change-Id: I0743f52efc3331a8500494b2d87f621190566b62
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/212680
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
This reverts commit 4a54307a39.
Reason for revert: Broke internal build, golem
Original change's description:
> Remove explicit bool type hack.
>
> During the fix for https://github.com/dart-lang/language/issues/1785,
> an explicit `bool` type was added to the variable `nullable` to ensure
> that it would properly participate in type promotion while the fix was
> still being rolled out. Now that the fix is in place, this explicit
> type is no longer needed.
>
> TEST=standard trybots
> Change-Id: Ied468b17dafa03075fd54c0df915e0a539420697
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/212266
> Reviewed-by: Alexander Markov <alexmarkov@google.com>
> Commit-Queue: Paul Berry <paulberry@google.com>
TBR=paulberry@google.com,alexmarkov@google.com
Change-Id: I748060275968e1a87a78e90d3770b17543549f33
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/212783
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
As part of deprecating support for native extensions we are also
migrating away from legacy VM-specific `native 'name'` syntax
towards metadata based encoding which does not require any special
syntax.
This CL is a step 1 in migration:
- introduces support for `@pragma('vm:external-name', 'name')`
which serves as a direct replacement for `native 'name'`;
- all core libraries and tests are migrated to use the annotation;
Once this CL lands and rolls we will edit internal and external embedders
to eliminate uses of the native keyword (step 2) and finally remove
support for native keyword across our parsers (step 3).
TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/28791
Change-Id: Id6dea878db82dd4fd81149243c425b5c5dc6df86
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/212461
Commit-Queue: Slava Egorov <vegorov@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
During the fix for https://github.com/dart-lang/language/issues/1785,
an explicit `bool` type was added to the variable `nullable` to ensure
that it would properly participate in type promotion while the fix was
still being rolled out. Now that the fix is in place, this explicit
type is no longer needed.
TEST=standard trybots
Change-Id: Ied468b17dafa03075fd54c0df915e0a539420697
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/212266
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
There have been duplicate cids
* kPointerCid / kFfiPointerCid
* kDynamicLibraryCid / kFfiDynamicLibraryCid
Only one of each made sense. This CL ensures we have only the former.
TEST=ci
Change-Id: Icdcef40c80ed09815da6074a774a02c707f6be37
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/212592
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
On arm64, mac builders default to kernel snapshots because build tools
are running in Rosetta.
Change-Id: Ia7eabb9e6f4f11df5f683b9af2cf8dba46306777
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/212746
Reviewed-by: William Hesse <whesse@google.com>
This test used `..` as a continuationToken (that is, it did not expect
a syntax error for `g(C<int, int> .. toString())`). This CL changes the
test to expect that to be a syntax error, and also eliminates the
static warning caused by using `?.` on a receiver with a known non-null
value (that's not relevant to the topic of this test, I just didn't
avoid it when the tests were written).
Change-Id: I275de6423710c3a598bedd2f54f4e9e7463a6d04
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/212587
Auto-Submit: Erik Ernst <eernst@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
Previously if we found a file was generated using one Bazel
configuration, then we'd continue using its path even if a new build
with a different configuration was more recent. In other words, we'd use
a stale generated file.
This commit gives `bazel_watcher.dart` the ability to detect changes to
symlinks which means that we'll do a refresh if `blaze-bin` changes
(it's already being watch in `context_manager.dart`). But since
`binPaths` previously always looked at all the possible "bin paths",
even after a refresh we could end up with using the wrong one. So the
second change of this commit is to look only at the `blaze-bin` symlink
in `findFile` (the symlink is updated by Blaze) to make sure that we
pick only the most recent path. This doesn't change `binPaths` itself
as it's also used for other purposes.
Bug: b/193636339
Change-Id: I641a0c9a5694121435360ca46b275d0b920d2911
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/209701
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Michal Terepeta <michalt@google.com>
This requires adding `isConst` to the ConstructorReference AST node,
which I think is appropriate, as it they can be in a constant context,
and we choose to report errors based on this state.
Change-Id: I4649c73a8bb3c2651a0e28838f0fc82574ce1622
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/212603
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Don't allocate zones, timeline events or profile samples in the compressible region, since these allocations don't yeild compressed pointers and are competing for a limited resource.
TEST=ci
Bug: b/196510517
Change-Id: I4fc2f0d67060f927fa10d241b15b1cae3b73d919
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/212400
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Many of these types were added by 93c5134a69 so that they would be serialized by reference and easier to skip over in the API message deserializer. With the new deserializer, any type can be successfully skipped over.
TEST=ci
Change-Id: Ie8150e382c69ee5d2e575bc16b42f8d80b9b0969
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/208682
Reviewed-by: Liam Appelbe <liama@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
These behaviors were introduced during the fix for
https://github.com/dart-lang/language/issues/1785, and at the time
they were tested using both unit tests and language tests. But it was
not possible to write ID tests for them, because ID tests don't
support turning on experimental language feature flags.
Now that the "constructor-tearoffs" feature has been turned on we can
test these behaviors using ID tests.
Change-Id: I6e1ccda4b5837ab61de80f15d2f31a82a90b4a22
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/212265
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
Change-Id: I0ee1fc41a110942fe1d54e63de49338650d3c3e5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/212591
Auto-Submit: Alexander Thomas <athom@google.com>
Commit-Queue: Alexander Thomas <athom@google.com>
Commit-Queue: William Hesse <whesse@google.com>
Reviewed-by: William Hesse <whesse@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
1) double.truncate() now simply calls toInt(), omitting
truncateToDouble() call.
2) double.floor() and ceil() are now intrinsified on arm64 and AOT/x64
and generated using DoubleToInteger instruction.
3) DoubleToInteger instruction is extended to support floor and ceil.
On arm64 DoubleToInteger is implemented using fcvtms and fcvtps
instructions. On x64 DoubleToInteger is implemented using roundsd
under a check if it is supported (with a fallback to a stub and a
runtime call).
AOT/x64:
Before: BenchFloor(RunTime): 318.82148549569655 us.
After: BenchFloor(RunTime): 133.29430189936687 us.
TEST=ci
Closes https://github.com/dart-lang/sdk/issues/46876
Closes https://github.com/dart-lang/sdk/issues/46650
Change-Id: I16ca18faf97954f8e8e25f0b72a2bbfac5bdc672
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/212381
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
These checks have just been missing from analyzer since the small
features feature.
Change-Id: I38ceb4f9baf7289807efff63af9e6f97fd73ae5d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/212601
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>