Remove ability to ignore subtype checks that fail but in a way that
would have passed in Dart 1.x.x.
Change-Id: I157a87777df52be139ef687d3fc193f7730a19b3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107461
Commit-Queue: Nicholas Shahan <nshahan@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
In lieu of actual common subexpression elimination, let's fake CSE by hand.
Change-Id: I09e75fda71af14465ff2cd2b678b1aaaebeed403
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107363
Reviewed-by: Stephen Adams <sra@google.com>
Commit-Queue: Mayank Patke <fishythefish@google.com>
Emit type literals in the constant pool using recipes.
Change-Id: Ia5ea024b444596844e94afbe2a34ce33e8557604
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107454
Commit-Queue: Stephen Adams <sra@google.com>
Reviewed-by: Mayank Patke <fishythefish@google.com>
HInstanceEnvironment returns the type of an instance, which gives access to all
type variables of the supertypes. HInstanceEnvironment is currently lowered to a
call to 'instanceType', but we expect to lower to a field access in
most cases, or a constant type which can be folded into subsequent operations.
The type_builder builds a type environment for each type expression. The
environment is build from the instance type scope and the function type scopes.
GVN optimizations already introduce more sharing, but it might be advantageous to
pre-compute the environment and sink the operations instead.
Later we will pass multiple type arguments as tuples which will reduce the number
of operations, especially in factory constructors.
There are some tweaks removing types in rti.dart to avoid re-entrant code.
Change-Id: I004adf7a8a464e575b32d59476c888db46542fde
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107460
Commit-Queue: Stephen Adams <sra@google.com>
Reviewed-by: Mayank Patke <fishythefish@google.com>
This is a breaking change. https://github.com/dart-lang/sdk/issues/37192
This change makes the name and value positional optional parameters in the
Cookie class constructor mandatory by changing the signature from
Cookie([String name, String value])
to
Cookie(String name, String value)
The parameters were already effectively mandatory as a bug introduced in
Dart 1.3.0 (2014) meant the name and value parameters could not be null, and
any such uses already threw a noSuchMethod exception because null did not
have a length getter. As such, this is not a breaking change but adopts the
current behavior as a null name and value was already of questionable use.
Breaking change: This change adds validation to the String name and String
value setters, which had not been validating the fields at all, unlike the
constructor. This also forbids the name and value from being set to null.
That meant potentially invalid cookies could be sent to servers if the
cookie was modified after construction. This change adds the validation to
follow the rule of least surprise.
The documentation has been updated accordingly and improved a bit.
Closes https://github.com/dart-lang/sdk/issues/37192
Closes https://github.com/dart-lang/sdk/issues/29463
Change-Id: Iffed3dc265ca9c68142c4372522913f9d1ff4d51
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103840
Commit-Queue: Jonas Termansen <sortie@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
These methods all were returning Uint8List, yet they were only
declared to return List<int>. This forced callers to either defensively
wrap the return values in Uint8List, or to assume the contravariant
return value:
* Utf8Codec.encode()
* BytesBuilder.takeBytes()
* BytesBuilder.toBytes()
* File.readAsBytes()
* File.readAsBytesSync()
* RandomAccessFile.read()
* RandomAccessFile.readSync()
* Uint8List.sublist()
Since it's related, this change also updates the following sublist()
methods to declare that they return the a sublist of the same type as
the source list:
* Int8List
* Uint8ClampedList
* Int16List
* Uint16List
* Int32List
* Uint32List
* Int64List
* Uint64List
* Float32List
* Float64List
* Float32x4List
* Int32x4List
* Float64x2List
Bug: https://github.com/dart-lang/sdk/issues/36900
Bug: https://github.com/dart-lang/sdk/issues/31547
Bug: https://github.com/dart-lang/sdk/issues/27818
Bug: https://github.com/dart-lang/sdk/issues/35521
Change-Id: Ic3bc1db0d64de36fb68b1d8d98037eed1464f978
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/101742
Commit-Queue: Todd Volkert <tvolkert@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Emit as-casts and type-checks.
The recipes and environments are dummy values, and there is no
propagation of type information, so the code is pretty terrible.
Change-Id: Iea8b7d7dddd4538187d88f12e9ed81439f74d0e1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106428
Commit-Queue: Stephen Adams <sra@google.com>
Reviewed-by: Mayank Patke <fishythefish@google.com>
Use embedded names to keep the field names consistent.
Change-Id: Ic8986b38e4a30e9457221939c6512d0446fb32f1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106203
Commit-Queue: Stephen Adams <sra@google.com>
Reviewed-by: Mayank Patke <fishythefish@google.com>
These are now represented as named functions. This will also help the
debug tools give more information.
Tested with three applications and adding the names caused a code size increases
of less than 1%.
|Total App JS size | Increase |
|------------------|----------|
| 24.7 MB | 0.06% |
| 242 MB | 0.14% |
| 327 MB | 0.19% |
Fixes: #37118
Change-Id: I89a259215ceb8b9e559a190dbd521c923d4c55c2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105546
Commit-Queue: Nicholas Shahan <nshahan@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
Make the documentation to Filestat.stat (and similar functions)
provide a dartdoc reference to FileSystemEntityType. Also adjust the
formatting of some other identifiers in comments.
Change-Id: I2af58e1c82136ef3ba1414b6f57c59fd8487d282
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/94982
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Jonas Termansen <sortie@google.com>
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Auto-Submit: James Lin <jamesdlin@google.com>
These stubs always throw so test should not pass for the wrong reason.
Change-Id: Ie9d00046d3c7e34b8b53798f1c20eb14807e8632
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106183
Commit-Queue: Stephen Adams <sra@google.com>
Reviewed-by: Mayank Patke <fishythefish@google.com>
This was unfortunately not detected by the bots:
* First because of #37117 this didn't break the build.
* Second, because of how I am migrating modular_test to use the test matrix,
we are temporarily not seeing failures either.
I had the intention to wait to land my changes until after the test
infrastructure had support to report the status of individual modular tests.
I landed what I thought was safe to land first, but didn't realize that my
first change already was hiding failures. Now I decided to move forward to
land the rest of my changes, so the only thing that remains is to wait for
the test infrastructure changes to land (ETA: very soon, a CL is already
approved).
TBR=vsm@google.com
Change-Id: Ia06f4ce9bc5d9368fc36a88f9c9ce5530e42c983
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105404
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
Commit-Queue: Sigmund Cherem <sigmund@google.com>
Closes#37153
Isolate.resolvePackageUri was the only API which had an implementation
across DDC and dart2js. The implementation in dart2js has been broken by
default since Dart 2.0.0 without a user implemented hook that is not
used on any public repo on github. Our current supported path for
invoking the compilers on projects disallows the import altogether on
the web and it is only usable with an older version of the
`build_web_compilers` package, or by invoking the compiler manually
outside of the build system. This CL does not break the ability to have
the import when invoking outside of the build system.
- Drop implementation for `Isolate.resolvePackageUri` from the dart2js
and DDC patch files.
- Drop all references to `defaultPackagesBase` since it is not used.
- Drop all tests under `isolate/browser` since we do not expect any
support on the web. Most of these tests would have already been
failing. Remove status file entries that refer to the deleted tests.
Change-Id: I4a19213b0946d835c00e9c107a714f3bc5672f86
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105080
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Nate Bosch <nbosch@google.com>
CompressionOptions's clientMaxWindowBits and serverMaxWindowBits are null
by default, indicating that no particular window size is negotiated in
the protocol, instead implying that the connection can handle a default
window size of 15 (32,768 bytes) (RFC 7692 7.1.2.1 and 7.1.2.2).
This change clarifies the documentation for the clientMaxWindowBits and
serverMaxWindowBits fields by stating they can be null to request the
protocol's default window size.
The current implementation's behavior is reasonable. It could be changed
to explicitly say 15 instead of null, but it's more efficient to omit the
request for 15 bits from the protocol since it's default, and it's fine to
allow callers to explicitly request 15 bits since the code already allows
this behavior. This change simply codifies the existing behavior in the
documentation.
The co19 test LibTest/io/CompressionOptions/DEFAULT_A01_t01 was written
based off the misleading documentation. An issue to test the intended
behavior was filed at <https://github.com/dart-lang/co19/issues/364>.
Closes https://github.com/dart-lang/sdk/issues/29436
Change-Id: If7645e7d5abd59715fd1eb0bfe8cbb877d776402
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103813
Commit-Queue: Jonas Termansen <sortie@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
TransferableTypedData instances are one-use kind of thing: once receiver materializes it, it can't be used
again, once sender sends it out to an isolate, sender can't send it to different isolate.
Example of use:
sender isolate:
```
Future<TransferableTypedData> consolidateHttpClientResponseBytes(HttpClientResponse response) {
final completer = Completer<TransferableTypedData>();
final chunks = <Uint8List>[];
response.listen((List<int> chunk) {
chunks.add(chunk);
}, onDone: () {
completer.complete(TransferableTypedData.fromList(chunks));
});
return completer.future;
}
...
sendPort.send(await consolidateHttpClientResponseBytes(response));
```
receiver isolate:
```
RawReceivePort port = RawReceivePort((TransferableTypedData transferable) {
Uint8List content = transferable.materialize().asUint8List();
...
});
```
31959[tr] and 31960[tr] tests were inspired by dartbug.com/31959, dartbug.com/31960 that this CL attempts to address:
```
╰─➤ out/ReleaseX64/dart 31960.dart
sending...
163ms for round-trip
sending...
81ms for round-trip
sending...
20ms for round-trip
sending...
14ms for round-trip
sending...
20ms for round-trip
sending...
14ms for round-trip
```
(notice no "since last checking" pauses") vs
```
╰─➤ out/ReleaseX64/dart 31960.dart
sending...
154ms since last checkin
174ms for round-trip
sending...
68ms since last checkin
9ms since last checkin
171ms for round-trip
sending...
13ms since last checkin
108ms for round-trip
sending...
14ms since last checkin
108ms for round-trip
sending...
14ms since last checkin
107ms for round-trip
```
Change-Id: I0fcb5ce285394f498c3f1db4414204531f98199d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99623
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Addresses some parts of #37127
Bug: http://dartbug.com/37127
Change-Id: Ia3a98e5764a16529331b2ba5613096d27061cab0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104763
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Todd Volkert <tvolkert@google.com>
Reviewed-by: Jonas Termansen <sortie@google.com>