We don't use `sync*` anymore, return pairs directly.
Support for multiple annotated fields and top-level variables.
Tests for `NamedType` and function reference.
Change-Id: I4713d0038e585f117631620bb902347182e8c43c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352980
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Revisions updated by `dart tools/rev_sdk_deps.dart`.
http (f0a02f9..d8b237d):
d8b237d 2024-02-15 Kevin Moore [http] Migrate to the latest pkg:web, require Dart 3.3 (dart-lang/http#1132)
5179d1c 2024-02-01 dependabot[bot] Bump actions/cache from 3.3.2 to 4.0.0 (dart-lang/http#1125)
0b803e8 2024-02-01 dependabot[bot] Bump dart-lang/setup-dart from 1.6.0 to 1.6.2 (dart-lang/http#1124)
82e0424 2024-01-29 Brian Quinlan Use preferred flutter version constraints (dart-lang/http#1119)
ccefa7c 2024-01-17 Brian Quinlan Support `BaseResponseWithUrl` in `package:cupertino_http` and `package:cronet_http` (dart-lang/http#1110)
e7a8e25 2024-01-16 Brian Quinlan Add `BaseResponseWithUrl.url` (dart-lang/http#1109)
c8f17a6 2024-01-12 Brian Quinlan Add a contributing guide (dart-lang/http#1115)
ebd86b9 2024-01-12 Brian Quinlan Add the ability to get response headers as a `Map<String, List<String>>` (dart-lang/http#1114)
5c75da6 2024-01-12 Brian Quinlan Add tests for sending "cookie" and receiving "set-cookie" headers (dart-lang/http#1113)
c2a6d64 2024-01-12 Alex Li [cronet_http] ⬇️ Downgrade `minSdkVersion` to 21 (dart-lang/http#1104)
661f5d6 2024-01-08 Brian Quinlan Use `package:http_image_provider` in all `Client` implementation examples (dart-lang/http#1089)
473a892 2024-01-04 Brian Quinlan Remove the "play-services-cronet" dependency in the example app when building `package:cronet_http_embedded` (dart-lang/http#1103)
e79ebe1 2024-01-03 Moritz Fix `labeler.yml` (dart-lang/http#1099)
73b0b1c 2024-01-01 dependabot[bot] Bump actions/labeler from 4.3.0 to 5.0.0 (dart-lang/http#1096)
15ec3ba 2023-12-21 Brian Quinlan Prepare to publish `package:cronet_http` as 1.0.0 (dart-lang/http#1087)
26e55c3 2023-12-21 Brian Quinlan cronet_http: require android API level 28 (dart-lang/http#1088)
b10f448 2023-12-22 Alex Li [cronet_http] Enables CI for `cronet_http_embedded` (dart-lang/http#1070)
a5b8eec 2023-12-18 Brian Quinlan Prepare to publish cupertino 1.2.0 (dart-lang/http#1080)
c114aa0 2023-12-15 Brian Quinlan Add a fake response for PNG images (dart-lang/http#1081)
db2cb76 2023-12-14 Kevin Moore Run web tests with wasm with dev Dart sdk (dart-lang/http#1078)
36f98e9 2023-12-12 Brian Quinlan Fix a bug where BrowserClient was listed as requiring Flutter (dart-lang/http#1077)
db7f165 2023-12-07 Brian Quinlan Provide an example of configuring IOClient with an HttpClient. (dart-lang/http#1074)
cd748b6 2023-12-04 Brian Quinlan Document that runWithClient must be called for every isolate (dart-lang/http#1069)
f585947 2023-12-04 Brian Quinlan Test persistentConnection with large request bodies (dart-lang/http#984)
7c05dde 2023-12-04 Brian Quinlan Add documentation for "no_default_http_client" (dart-lang/http#1068)
d8983fa 2023-12-04 Brian Quinlan Add support for setting headers for all requests (dart-lang/http#1060)
c90496e 2023-12-04 Brian Quinlan Document how to use replacement `Client` implementations (dart-lang/http#1063)
c8536e4 2023-12-01 Kevin Moore [http_client_conformance_tests] Updates to support wasm compilation (dart-lang/http#1064)
5dd5140 2023-12-01 dependabot[bot] Bump actions/setup-java from 3 to 4 (dart-lang/http#1065)
064f510 2023-11-30 Devon Carew misc cleanup of yaml files (dart-lang/http#1061)
22f52e2 2023-11-30 Brian Quinlan Update pubspec.yaml to 0.4.2 (dart-lang/http#1059)
40a46d8 2023-11-29 Brian Quinlan Fix a bug where cronet_http sends incorrect HTTP request methods (dart-lang/http#1058)
c125ed5 2023-11-27 Kevin Moore [http] Allow pkg:web v0.3.0 (dart-lang/http#1055)
9fb4cfa 2023-11-22 Kevin Moore Update lints to latest, etc (dart-lang/http#1048)
5e84d9f 2023-11-21 Kevin Moore Update platform-specific imports for wasm (dart-lang/http#1051)
8c9feb5 2023-11-21 Kevin Moore [http] Fix type cast for dart2wasm (dart-lang/http#1050)
a2f0b25 2023-11-21 Kevin Moore [http] use pkg:web, require Dart 3.2 (dart-lang/http#1049)
markdown (c2b8429..6efe141):
6efe141 2024-02-14 Kevin Moore Migrate example to pkg:web, update minimum required Dart version (dart-lang/markdown#582)
web_socket_channel (5241175..3db86bc):
3db86bc 2024-02-15 Kevin Moore Require Dart 3.3 and the latest pkg:web (dart-lang/web_socket_channel#326)
1c4a923 2024-02-01 dependabot[bot] Bump dart-lang/setup-dart from 1.6.0 to 1.6.2 (dart-lang/web_socket_channel#323)
041aa3c 2024-01-08 Devon Carew adjust the HtmlWebSocketChannel ctor parameter type; rev to 2.4.3 (dart-lang/web_socket_channel#320)
0e8bedc 2024-01-04 Tyler Dunn Allow pkg:web v0.3.0 (dart-lang/web_socket_channel#306)
62370cc 2024-01-01 dependabot[bot] Bump actions/stale from 8.0.0 to 9.0.0 (dart-lang/web_socket_channel#312)
2a0563f 2023-12-18 Kevin Moore Prepare release v2.4.1 (dart-lang/web_socket_channel#301)
906c944 2023-12-14 Kevin Moore CI: test dev SDK with dart2wasm (dart-lang/web_socket_channel#304)
a316c53 2023-12-13 Kevin Moore Rename helper extensions to not collide with pkg:web unreleased (dart-lang/web_socket_channel#303)
547184a 2023-12-11 Kevin Moore blast_repo fixes (dart-lang/web_socket_channel#302)
969bc6c 2023-12-09 Ömer Sinan Ağacan Fix JS value to Dart conversion when receiving from a web socket (dart-lang/web_socket_channel#298)
df096a9 2023-11-30 Ömer Sinan Ağacan Remove removed lints (dart-lang/web_socket_channel#299)
67bf9a3 2023-11-23 Nate Bosch Drop some use of ! (dart-lang/web_socket_channel#296)
d4a8d70 2023-11-22 Kevin Moore Small tweak (dart-lang/web_socket_channel#295)
9e80b8d 2023-11-22 Kevin Moore migrate to pkg web (dart-lang/web_socket_channel#294)
Change-Id: I87c4baa07efc5fc2bb283c7b32e69ad69c5a02aa
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352960
Reviewed-by: Kevin Moore <kevmoo@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
Adding a reference to node.receiver in the replacement placeholder was modifying its parent pointer eagerly. When running Dart2js with serialization the pointers were reset by the serialization process after the closed world phase. However, when running without serialization the pointer stayed corrupted and lead to a malfomed tree in later phases. This manifested as an error trying to lookup the location (i.e. the kernel Location) of the receiver.
This fixes the issue by cloning the receiver of the call for the placeholder. This avoids updating the original receiver's parent pointer.
Today the receiver is always a VariableGet referencing a variable defined in a surrounding Let scope (this is how the CFE encodes x..a()..b()). We could cast the receiver but to be a bit more resilient I've opted to clone the node. The cloner in the kernel package fails on free variable (i.e. if the variable is not declared in the cloning scope). But in this case we want to simply use the same declaration reference from the cloned node. I've added a cloner that provides that fallback behavior.
I also considered using a closure to lazily create the replacement but closures are expensive and we'd be creating one per field per proto which would be a considerable cost for large programs. There wasn't really a clean way to do the same with a static tearoff.
Change-Id: I7ef0e24a9457cfa9f2e116eb3569b0652d321c08
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352563
Commit-Queue: Nate Biggs <natebiggs@google.com>
Reviewed-by: Mayank Patke <fishythefish@google.com>
Some assorted cleanup, mostly to reduce writing `as HPhi`:
* Add HPhi-specific versions of .previous/.next which perform the cast
* Similarly, add an HPhiList subclass of HInstructionList with casting
getters for the first and last phi
* Shorten some while loops to for loops
It would be nice to improve the typing further, but it's difficult to
do so without incurring overhead from virtual dispatch or
generic/covariant parameter checks - see #54920.
Issue: #29302
Issue: #48820
Issue: #54920
Change-Id: I7af8eceb1538031460207e049014e58776942c03
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352684
Reviewed-by: Stephen Adams <sra@google.com>
The motivation behind this CL is performance: currently
PRESUBMIT.py checks for formatting errors a file at a time.
This can be very slow when a CL modifies a lot of files. For
reference, a command-line invocation of `dart format`
takes 2s to check 100 files at once, vs 70s if you run the
command one file at a time.
This change updates PRESUBMIT.py to run `dart format` first
on all the changed files in bulk to determine whether any
has formatting errors. If any formatting error is found, it
goes through the process of checking each file individually
again for formatting errors and compares the result against
the state before a CL's changes (same process as today).
However, if no errors are found, we bypass the slow check
entirely!
To validate the implementation I created a pretend CL with
100 modifications. I leveraged
`tests/language/function_type/test_generator.dart` to touch
100 test files easily. The results were as expected:
* if all files are formatted properly, the presubmit
completes now in 4s (was 76s).
* If all files have formatting errors, the presubmit
didn't regress beyond the usual observable performance
variances (150s in both cases).
Notes about the change itself:
* refactored to compute the set of affected files before
running the formatting checks
* refactored to provide some information as data (e.g.
`excluded_folders`) instead of lambdas (e.g.
`should_skip`) to support the first change
* added a bulk option to `HasFormatErrors` to take the
fast pass
Eventually we could take this a step further and improve the
performance of the failure case. That would require parsing
the output of the bulk run in order to avoid the individual
runs on all files, and only check for the previous version
of the files that indeed required formatting changes.
Fixes https://github.com/dart-lang/sdk/issues/54864
Change-Id: I0cfbd84f6c62eca48ac91449599ef9ac4c1800f8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352740
Commit-Queue: Sigmund Cherem <sigmund@google.com>
Reviewed-by: William Hesse <whesse@google.com>
Reviewed-by: Bob Nystrom <rnystrom@google.com>
The APIs mentioned above are `addHttpClientProfilingData` and
`getHttpClientProfilingData`.
This CL also makes it so that profiling information recorded using
`addHttpClientProfilingData` is included in dart:io service extension
responses.
TEST= pkg/vm_service/test/get_http_profile_test.dart
Change-Id: I892a7a8485369bb92cbb0c086b93498bcec25d5f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/341440
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Derek Xu <derekx@google.com>
Reviewed-by: Ömer Ağacan <omersa@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
The only real breaking change since the last roll should
be the IDL update.
Change-Id: I1cdcf2f6acae52d7b644025e9d0e05a5c1ca7609
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352941
Commit-Queue: Srujan Gaddam <srujzs@google.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
Commit-Queue: Kevin Moore <kevmoo@google.com>
Some preparation for deleting all the old type system code.
Change-Id: I9319064100ce19a4122612c36781c7e4a71094aa
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352724
Reviewed-by: Mark Zhou <markzipan@google.com>
Commit-Queue: Nicholas Shahan <nshahan@google.com>
We can't generate a virtual call to `Object.==` in generated code as
`Object.==` may not be added to the dispatch table, even with
`@pragma(wasm:entry-point)`.
Instead this adds a top-level `_runtimeTypeEquals` function that calls
`==` on the `_Type` argument. Effectively this forces adding `_Type.==`
to the dispatch table and calls it virtually.
Fixes#54926.
Change-Id: Ice3306ed00f66c8abedb3ef11b58c15296457eb0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352900
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Ömer Ağacan <omersa@google.com>
Similar to `ignore for this line` or `ignore for the whole file`, this
adds a new fix to `ignore in analysis_options.yaml`.
The fix will update the `analyzer.errors` to ignore the selected label.
Related issue: https://github.com/dart-lang/sdk/issues/49572
Additionally, this change modified `createAnalysisOptionsFile` to allow
adding errors to the analysis options for testing purposes.
R=paulberry@google.com
Change-Id: I94b700395ce50417dc0411ff2913f9e4ca908c66
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352220
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Auto-Submit: Osama Alraddadi <osama.alraddadi@gmail.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
No changes in cids, just defining kFirstTypedDataCid and
kLastTypedDataCid to avoid assumptions that kTypedDataInt8ArrayCid is
the first one and that kByteDataViewCid comes after the last one
(outside of compile-time checks for possible new typed data cids before
kTypedDataInt8ArrayCid and kByteDataViewCid).
Also defining kNumTypedDataCidRemainders to be used in the place of the
appropriate hardcoded 4s.
TEST=ci
Change-Id: Ic9f937ef0fa670b3331b9079090596d9a120ee15
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352862
Commit-Queue: Tess Strickland <sstrickl@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
The linked README(https://github.com/skeeto/hash-prospector#two-round-functions) has been updated with these parameters that result in a significantly lower bias that other projects have also began adapting.
For context, this function is used internally by `Object.hashAllUnordered`.
Change-Id: I7ca042196bbfdb5abdb28f8d6d9cbca69d21fb2b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/351920
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Lasse Nielsen <lrn@google.com>
Reviewed-by: Stephen Adams <sra@google.com>
Auto-Submit: Parker Lougheed <parlough@gmail.com>
Reviewed-by: Ömer Ağacan <omersa@google.com>
Users of our standalone embedders we distribute in the Dart SDK should
be using `dart_api_dl.h` (and initialize it from
the `dart:ffi`s `NativeApi.initializeApiDLData`)
If there's any API functions missing, we can add them.
Though we should not Dart C API symbols that are only relevant for
embedders. It requires a custom embedder implementation (which is
outside the scope of what we distribute in Dart SDK)
Issue https://github.com/dart-lang/sdk/issues/40579
TEST=ci
Change-Id: I6f3842668c59a5dd6fefc6857581995501b9b0e0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352820
Reviewed-by: Slava Egorov <vegorov@google.com>
I do some benchmarking with our benchmarker tool which uses "perf stat"
under the hood.
"perf stat" uses hardware counters, but we have a limited amount of
those. The benchmarker tool asks for 3 event types that will use 3
hardware counters. If there aren't 3 available it will do "scaling" and
only measure what it's asked some percentage of the time so it can still
measure all of the stuff it's asked.
This should be fine. My computer has 4 hardware counters. I think.
Only today I still experienced scaling.
And previously I asked for 4 event types because I had 4 hardware
counters, but then suddenly 1 went missing.
As it turns out another process was using hardware counters.
This CL includes a tool that - at least seeems to - be able to find
other processes using perf events (although it might not be events that
use hardware counters), thus possibly allowing you to kill that or those
process(es). I did, and I now have 4 hardware counters again.
I also made scaling more visible if it happens when using the benchmark
tool. Before it was hidden between other output, not it's also printed
at the end, together with a hint to use the new tool to attempt to fix
it.
Change-Id: Ia51db04a4f25d1d82c3d32b3901cded7d980e7f5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352525
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Nested macros: check that macro impls can themselves use macros.
Disallowed use: check that macros can't be used in the library in which they are declared, or in the same library cycle.
R=jakemac@google.com
Change-Id: I3b12afc27e5784edc217508b7763a9b448229877
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352522
Reviewed-by: Jake Macdonald <jakemac@google.com>
Commit-Queue: Morgan :) <davidmorgan@google.com>
Auto-Submit: Morgan :) <davidmorgan@google.com>
This reverts commit aec3ec0244.
- Corrected 'controlling condition' detection.
- Added test that is incorrectly compiled to infinite loop with incorrect controlling condition detection.
See https://github.com/dart-lang/sdk/issues/54115#issuecomment-1944285230 for an image of part of the CFG for `doWhileLoop` where the condition in B4 was previously mis-identified as controlling `phi(true,false)` at B12.
Issue: #54115
Change-Id: I0d2c2ff83b202071f6d7050d34de8ff25d05cb22
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352443
Reviewed-by: Mayank Patke <fishythefish@google.com>
Commit-Queue: Stephen Adams <sra@google.com>
Precise new-space usage requires looking at all the TLAB pointers and normally only occurs under a GC safepoint. For external queries coarsen the answer to capacity.
TEST=g3
Bug: b/324221135
Change-Id: I0e83bbcddba21ddf539fb2afdedf2959cef2c078
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352682
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
- These tests rely on the internals of the old type system.
- Copy some expectations to the language suite when it looks like
there isn't already coverage for the same test.
Change-Id: I63bfa2bc94fb29b4e4f90c3c02cf0943d19764b6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352463
Commit-Queue: Nicholas Shahan <nshahan@google.com>
Reviewed-by: Kallen Tu <kallentu@google.com>
This introduces an asyncExpectThrowsWhen to async_helper, similar to
Expect.throwsWhen, to allow specifying semantics under behavior
variations in this test.
We also update await_for_test to no longer skip expectations in dart2js.
Change-Id: Ie147f74f384a0e196e40b75c59fe585f011ede49
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/351721
Reviewed-by: Lasse Nielsen <lrn@google.com>
Reviewed-by: Stephen Adams <sra@google.com>
Commit-Queue: Sigmund Cherem <sigmund@google.com>
Today, most tests that touch on a behavior variation end up
skipping expectations or the entirety of a test for some
testing configurations. Moving forward, we'd like skip less
and try to account for the behavior variations if that's
reasonable.
This CL shows an approach to improve our test coverage for
behavior variations. We introduce two new methods to
[Expect] that allow us to conditionally check that a
function throws, depending on variation predicates.
The CL changes expectations for errors that don't occur
when dart2js omits parameter type checks or implicit
downcasts.
Note: originally I had the intention to introduce a name
parameter to `Expect.throws` and `Expect.throwsTypeError` to
avoid introducing a new API. However, because these APIs are
used for testing core language features, such as function
parameters themselves, we decided to keep the use of
features in these APIs as simple as it can be.
CoreLibraryReviewExempt: no public library semantic change - only improving test coverage under variations
Change-Id: I531657622655778491eaca8b37ba69ffaab559fc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/351340
Reviewed-by: Lasse Nielsen <lrn@google.com>
Commit-Queue: Sigmund Cherem <sigmund@google.com>
Support `checkedExplicitCasts`,`checkedImplicitDowncasts`, `checkedParameters`, `jsNumbers`, and `nativeNumbers`.
dart2js and DDC configs should support `jsNumbers`.
dart2js and dart2wasm (both optimized) do not support checked parameters nor implicit downcasts checks.
dart2wasm optimized does not support explicit cast checks.
This CL adds these features and makes sure certain configs are opting into these features.
Bug: https://github.com/dart-lang/sdk/issues/54798
Change-Id: If61d513569259317b1fb89c27d3fd97e3542697d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352103
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Nate Bosch <nbosch@google.com>
Commit-Queue: Kallen Tu <kallentu@google.com>
Reviewed-by: Bob Nystrom <rnystrom@google.com>
These can't be deprecated for a while, at least not until 'dart:html' itself is.
In the mean time, we can at least discourage usage of it and direct developers to more appropriate, long-term solutions.
Contributes to https://github.com/dart-lang/sdk/issues/54852
CoreLibraryReviewExempt: Documentation only change that directs developers to more specific, performant, or flexible solutions.
Change-Id: I9d099a49909673f8af23eab480fdd225e56bcab2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/351961
Reviewed-by: Nate Bosch <nbosch@google.com>
Reviewed-by: Lasse Nielsen <lrn@google.com>
Commit-Queue: Lasse Nielsen <lrn@google.com>
This test deoptimizes, so it can't run in AOT.
TEST=runtime/tests/vm/dart/regress_54871_test.dart
Fixes: https://github.com/dart-lang/sdk/issues/54913
Change-Id: Ida2c67f20c8cf879db2cc9424f3d37535b76370d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352660
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Auto-Submit: Daco Harkes <dacoharkes@google.com>
`Pointer`s were not handled in deferred materialization of objects
on deoptimizations. This lead to the address field being written as a
tagged value, causing the actual address to be smitagged.
Subsequent uses of those addresses would lead to segfaults.
This CL handles the `Pointer`s manually to deal with the untagged
address.
`--trace-deoptimization-verbose` before this CL:
```
Deoptimizing [...]
_typedDataBase@8050071 <- Pointer: address=0x7ffff7488081
null Field @ offset(8) <- 140736616678128
null Field @ offset(16) <- TypeArguments: (H39d2e3b4) [Type: Never]
```
after this CL:
```
Deoptimizing [...]
_typedDataBase@8050071 <- Pointer: address=0x7fa2c0a88081
pointer@data <- 0x7fa29c16c0e0
pointer@type_args <- TypeArguments: (H39d2e3b4) [Type: Never]
```
TEST=runtime/tests/vm/dart/regress_54871_test.dart
TEST=tests/ffi/structs_test.dart with --hot-reload-rollback-test-mode
and --optimization-counter-threshold=50
Closes: https://github.com/dart-lang/sdk/issues/54871
Change-Id: I13b6404c8b098643b8ac0f59ee8e9bc635f33b8d
Cq-Include-Trybots: luci.dart.try:vm-reload-rollback-linux-debug-x64-try,vm-reload-rollback-linux-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352300
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
These ease my life slightly.
Examples:
Compile to executable to get faster runs:
```
out/ReleaseX64/dart-sdk/bin/dart compile exe pkg/front_end/tool/gitformat_cl.dart -o ~/bin/format_cl
out/ReleaseX64/dart-sdk/bin/dart compile exe pkg/front_end/tool/git_branch_helper.dart -o ~/bin/gitbranch
```
Now I can format my entire CL with
```
$ format_cl
Using file:///path/to/dart-sdk/sdk/out/ReleaseX64/dart
stdout> Formatted 3 files (0 changed) in 0.35 seconds.
```
and get info about my branching with
```
$ gitbranch
├── origin/main
│ ├── add_a_few_cfe_util_tools [ahead 2]
```
Change-Id: I2e89196ab702660a1486894d22678e3cd0c07994
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352641
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
We want dart2wasm be comparable to dart2js / dart2aot, the ladder two
are much more conservative with inlining compared to current dart2wasm.
The -O3 is described in the binaryen sources as agressive for
performance and therefore willing to compromise code size.
The -Os is more nuanced: It will perform many optimizations that are
done in -O3 (and e.g. not in -O2) but it will make inlining less
agressive.
This reduces flute compile-time by 10% and code size by 10%
This benchmark results are mixed (some things get faster, some things
slower). Naturally there'll be specialized micro benchmarks that
get hit hard by this.
Where performance matters we should rather make dart2wasm use better
inlining heuristics and annotate code with
`@pragma('wasm:prefer-inline')`
Change-Id: Idf7e75e4e385629c9cec66359efe0afe50db3e72
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352523
Reviewed-by: Slava Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
The newer version will contain optimizations that remove `array.len`
instructions of arrays that have a known length
Change-Id: I52a302fdfdc757e082c762c89cbcb68123025795
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352524
Reviewed-by: Slava Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
Now that the types in the message were recently adjusted to include the '?', I think it's beneficial to focus on what the underlying problem is rather than the syntax.
Change-Id: I7e59ea3cc2ce618fe46052a9c5e04a973a5f6ab9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/349581
Auto-Submit: Parker Lougheed <parlough@gmail.com>
Reviewed-by: Jens Johansen <jensj@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Chloe Stefantsova <cstefantsova@google.com>
The dart closures for the then/onError callbacks we use on a JS promise
will not flow back into dart. There's therefore no reason to use the
very heavyweight `allowInterop` mechanism.
This makes (after [0]) asynchronous calls to JS from Dart more than 2x
as fast.
This also aligns the `promiseToFuture` implementation with the extension on
`JSPromise` (see sdk/lib/_internal/wasm/lib/js_interop_patch.dart)
modulo the fact that the API doesn't work on interop types but Dart
types and needs therefore the full JS<->Dart conversion.
=> Maybe it would make sense to deprecate `promiseToFuture` / not offer it
in dart2wasm and make users use instead the extension on `JSPromise`
instead?
[0] https://dart-review.googlesource.com/c/sdk/+/352520
Change-Id: Ibc80bf083e7ec817f000257d6995108954060277
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352521
Reviewed-by: Srujan Gaddam <srujzs@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
We're expecting to do multiple breaking changes to native_assets_cli
and native_assets_builder in the foreseeable future. So lets not break
the roller script for DEPS.
Change-Id: I6829de8d11e381fa2c56a974400ac636ec9e84cd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/350925
Reviewed-by: Moritz Sümmermann <mosum@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Also cleans up some wording and better explains all the possible
features of the annotation.
CoreLibraryReviewExempt: Docs for backend-specific library.
Change-Id: Id5f3e1ea09d2ceaf9f727eb7885b38319b978dd6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352441
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Srujan Gaddam <srujzs@google.com>