This code is no longer used now that the new runtime types are always
enabled.
Change-Id: Ic8e59ed43931fc89efeee48269c7da388a6c6553
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/344606
Reviewed-by: Mark Zhou <markzipan@google.com>
Commit-Queue: Nicholas Shahan <nshahan@google.com>
Work towards https://github.com/dart-lang/linter/issues/3745
This markedly improves the runtime of the `close_sinks` rule. The other rule that uses LeakDetectorProcessors, `cancel_subscriptions`, is maybe slightly slower, or the same speed. The change in the benchmark below may be within the margin of error.
Here's what we change:
* Replace the `predicates` field in the `cancel_subscriptions` and `close_sinks` visitors with a static field and getter; reduces memory.
* The diff of leak_detector_visitor.dart shows pretty cleanly what changed: the `_buildVariableReporter` function is simplified, with all of the complexity of visiting nodes going into a new `_ValidUseVisitor`, which determines whether there is a valid "use" of a variable, which might be a subscription cancelation, etc. Each of the top-level functions like `_hasConstructorFieldInitializers` and `_hasReturn` is moved into visit methods in that visitor.
* The implementation is overhauled, but the logic should not be changed in this code; this should be functionally a no-op.
* Performance benefits come from the removal of `traverseNodesInDFS` as well as node-specific visitors. Previously, `_hasReturn` was called for _every node in the tree_! Now it is only called with ReturnStatements.
* Remove the list of `_PredicateBuilder`s needed by a LeakDetectorProcessors instance, replacing it with an enum, `_VariableType`, which has two values, `field` or `local`. Previously, the predicate builders were rather complex lambdas of logic that were hard to reason about, but really boiled down to "apply this filter to fields" and "apply this filter to locals." So using `_VariableType` as a signal, the logic can just be written into the new Visitor, along with all of the other filtering logic.
Benchmarks
| test | cancel_subscriptions | close_sinks |
|--------|----------------------|-------------|
| base 1 | 15 ms | 54 ms |
| base 2 | 14 ms | 52 ms |
| base 3 | 15 ms | 59 ms |
| avg | 14.7 ms | 55.0 ms |
|--------|----------------------|-------------|
| PR 1 | 15 ms | 32 ms |
| PR 2 | 14 ms | 32 ms |
| PR 3 | 18 ms | 29 ms |
| avg | 15.7 ms | 31.0 ms |
Cq-Include-Trybots: luci.dart.try:flutter-analyze-try,analyzer-win-release-try
Change-Id: Ie3c6af8b3c94992d45279a2430559fd6b4cedb8e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/348980
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
There is a race between closing the socket and killing the process that
causes the socket close to fail ~1% of the time on my machine.
R=jakemac@google.com
Change-Id: I16d337534956194a11cc46f29cb722ac1bda5538
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352905
Auto-Submit: Morgan :) <davidmorgan@google.com>
Reviewed-by: Jake Macdonald <jakemac@google.com>
Commit-Queue: Jake Macdonald <jakemac@google.com>
This reverts commit 8d703d1371.
Reason for revert: HHH bot is broken
Original change's description:
> [deps] rev http, markdown, web_socket_channel
>
> 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>
Change-Id: I8723a343908227e39604cba7827c0f99912a10f4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352967
Reviewed-by: Siva Annamalai <asiva@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Siva Annamalai <asiva@google.com>
Auto-Submit: Devon Carew <devoncarew@google.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
Improve the handling of code where the async flow forks:
e.g. for `fut.whenComplete(c.complete)` we might proceed
unwinding through awaiters of `c.future` and forget about the
future returned from `whenComplete`. This happens because
we choose to present result of the unwinding as a single
stack and not a tree. In this situation the error will only
propagate into that future and whether or not the error will be
handled depends on that future alone.
As part of this change also start respecting ignored bit on
futures without listeners.
TEST=pkg/vm_service/test/pause_on_unhandled_async_exceptions7_test.dart
CoreLibraryReviewExempt: Comment only changes to core library
Change-Id: I27b689ab07a725e8faa8d91cf40e88ebc8c441a0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352904
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Lasse Nielsen <lrn@google.com>
Commit-Queue: Slava Egorov <vegorov@google.com>
Change-Id: I842b8d96fc0ab005990a15b74e001990a7710633
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352864
Reviewed-by: Jonas Jensen <jonasfj@google.com>
Commit-Queue: Alexander Thomas <athom@google.com>
R=lrn@google.com
Change-Id: I1b35204ff11a119a9899d0485f3040bae065aee9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352903
Reviewed-by: Alexander Thomas <athom@google.com>
Auto-Submit: Morgan :) <davidmorgan@google.com>
Commit-Queue: Alexander Thomas <athom@google.com>
Reviewed-by: Emmanuel Pellereau <emmanuelp@google.com>
- Adds hasInitializer and hasConst to VariableDeclaration.
- Renames isStatic to hasStatic to be consistent with other members.
- Improves serialization tests by randomizing some values, which
should help to catch ordering errors in serialization.
Change-Id: I44199b1b058444510b9fa55afe0611187b90fc95
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352540
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Chloe Stefantsova <cstefantsova@google.com>
Reviewed-by: Morgan :) <davidmorgan@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Auto-Submit: Jake Macdonald <jakemac@google.com>
Had added the ability to check navigation for a second file, but tests that use that are timing out on the windows bot. This is an attempt to fix it.
Change-Id: I5b9bbe81edb675442b7d58aa04df335284073fd3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352981
Commit-Queue: Keerti Parthasarathy <keertip@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
When VirtualMemory object for the whole compressed pointers heap
region is destroyed in VirtualMemory::~VirtualMemory(), it tests
if the reservation address belongs to a compressed heap via
VirtualMemoryCompressedHeap::Contains(reserved_.pointer())
If the heap region happens to be reserved at the 4GB aligned address
by the O/S, then reservation address would match base address of
the compressed pointers heap, and this check would pass and
the whole reserved heap region would be passed to
VirtualMemoryCompressedHeap::Free.
However, the reservation size of the whole heap region is
(8GB - 1 page) which is not aligned to kCompressedPageSize (512K).
This would trigger assertion
ASSERT(Utils::IsAligned(size, kCompressedPageSize));
inside VirtualMemoryCompressedHeap::Free.
The fix is to detect when the whole compressed heap region is being
destroyed and avoid calling VirtualMemoryCompressedHeap::Free
as the region reserved for the whole heap is not managed by
the compressed heap itself.
TEST=python3 tools/test.py -n vm-win-debug-x64c --repeat 10000 co19/LibTest/typed_data/Uint32List/Uint32List.view_A01_t01
Fixes https://github.com/dart-lang/sdk/issues/51170
Change-Id: Icdf02eb0e2e3f39e435cba76fa647726bb383928
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352962
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Liam Appelbe <liama@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Under user-space emulation or 32-bit ARM on a 64-bit ARM system, /proc/cpuinfo describes the host CPU instead of the emulated ARM CPU.
Also fix the encoding of sdiv. Apparently QEMU is stricter than hardware.
TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/29270
Bug: https://github.com/dart-lang/sdk/issues/54909
Change-Id: Icadf1a276e468dbb8142da49f961f33bca499d27
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352680
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
This CL adds @pragma('vm:awaiter-link') in various places in
Stream implementation to facilitate unwinding and expands
async unwinding logic with more information about
Stream internals.
At the same time be more conservative when checking if an
exception thrown from async method handled: failing to unwind
the stack fully creates situations when we incorrectly report
caught exceptions as uncaught, which frustrates users.
To distinguish stream subscriptions with and without error
handlers we add a state bit. Otherwise, it looks like all
subscriptions have error handlers because if no error
handler is installed we eagerly install error handler forwarding
the error to `Zone.handleUncaughtError`.
Fixes https://github.com/dart-lang/sdk/issues/53334
Fixes https://github.com/dart-lang/sdk/issues/54788
Fixes https://github.com/dart-lang/sdk/issues/47985
TEST=runtime/vm/dart/awaiter_stacks/stream_methods_test.dart,pkg/vm_service/test/pause_on_unhandled_async_exceptions6_test.dart,pkg/vm_service/test/pause_on_unhandled_async_exceptions7_test.dart
CoreLibraryReviewExempt: No behavioral change. Async changes reviewed by lrhn@
Cq-Include-Trybots: luci.dart.try:vm-aot-android-release-arm64c-try,vm-aot-android-release-arm_x64-try,vm-aot-dwarf-linux-product-x64-try,vm-aot-obfuscate-linux-release-x64-try,vm-aot-optimization-level-linux-release-x64-try
Change-Id: Ic51f926867092dd0adbe801b753f57c357c7ace2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/322720
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Lasse Nielsen <lrn@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Slava Egorov <vegorov@google.com>
Cleanup branches that are no longer reachable.
Change-Id: If53a80915f3c7dc444e7027a8287395add23165b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/344605
Reviewed-by: Mark Zhou <markzipan@google.com>
Commit-Queue: Nicholas Shahan <nshahan@google.com>
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>