Commit Graph

79322 Commits

Author SHA1 Message Date
Brian Wilkerson 3392632667 Unify three diagnostics for documentation purposes
Change-Id: Id90d4e82d01b59056117c7fc234d8b3a5a8ec7e4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192286
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-22 14:44:33 +00:00
Brian Wilkerson 41e00354a3 Unify four diagnostics for documentation purposes
Change-Id: Ifefe90cdbc3ddb9e243a056398b5d8611b3bf22e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192287
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-22 14:43:43 +00:00
Brian Wilkerson 464cc509ab Remove one move ignore comment from generated LSP support
Change-Id: I905056f98780f127466caa0ba9e8a5f6d13a7282
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192285
Reviewed-by: Danny Tuppeny <danny@tuppeny.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-22 14:09:23 +00:00
Lasse Reichstein Holst Nielsen 7f2b875b4a Add efficient entries and keys.contains to SplayTreeMap.
Update some other methods to be more performant than the default
inherited from `MapMixin`.
Change argument validation to `map.[]=`, `map.putIfAbsent` and `set.add`
checks that the key/element is allowed by the `compare` function.
Previously the map methods just checked `key != null` (which was wrong),
and compare did nothing special, both just relied on the `splay` call
doing a `compare` call. That was not true for an empty map, which means
that you could add a key/element which wasn't a valid comparable,
as long as you did it as the *first* key/element.
That is now caught.


Bug: https://github.com/dart-lang/sdk/issues/45296
Change-Id: I8ba49a7892ed27daa4434f5fb7be3e777ef32bc9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190883
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Nate Bosch <nbosch@google.com>
2021-03-22 13:20:13 +00:00
William Hesse 88ee333408 Revert "[co19] Roll co19 to ae818220b12ec9c2470519db2c7167cbe4745e12"
This reverts commit 03e8ddd13c.

Reason for revert: Change to hooks does not work with Windows.

Original change's description:
> [co19] Roll co19 to ae818220b12ec9c2470519db2c7167cbe4745e12
>
> 2021-03-22 sgrekhov@unipro.ru Fixes #1032. Change place where analyzer expects COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
> 2021-03-22 sgrekhov@unipro.ru Fixes #1027. Typo fixed
> 2021-03-22 sgrekhov@unipro.ru Fixes #1026. Missed experimental flag added
> 2021-03-22 sgrekhov@unipro.ru Fixes SDK issue #45381. Use 32-bit int boundaries for 32-bit systems
> 2021-03-19 sgrekhov@unipro.ru #1024. Tests that plays with the integers not representable in JS moved to separate files. These files will be skipped on JS
>
> Cq-Include-Trybots: dart/try:analyzer-nnbd-linux-release-try,dart2js-nnbd-linux-x64-chrome-try,ddc-nnbd-linux-release-chrome-try,front-end-nnbd-linux-release-x64-try,vm-kernel-nnbd-linux-debug-x64-try,vm-kernel-nnbd-linux-release-simarm64-try,vm-kernel-nnbd-linux-release-x64-try,vm-kernel-nnbd-mac-release-x64-try,vm-kernel-nnbd-win-release-x64-try,vm-kernel-precomp-nnbd-linux-debug-x64-try,vm-kernel-precomp-nnbd-linux-release-simarm64-try,vm-kernel-precomp-nnbd-linux-release-x64-try
> Change-Id: Idc63625a841f1f90b0cce5db9ca6add13e4d1192
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192303
> Reviewed-by: William Hesse <whesse@google.com>
> Commit-Queue: Alexander Thomas <athom@google.com>

TBR=whesse@google.com,athom@google.com

Change-Id: I5f66db541034377f5d68424073282080d13fd34b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Cq-Include-Trybots: dart/try:analyzer-nnbd-linux-release-try
Cq-Include-Trybots: dart2js-nnbd-linux-x64-chrome-try
Cq-Include-Trybots: ddc-nnbd-linux-release-chrome-try
Cq-Include-Trybots: front-end-nnbd-linux-release-x64-try
Cq-Include-Trybots: vm-kernel-nnbd-linux-debug-x64-try
Cq-Include-Trybots: vm-kernel-nnbd-linux-release-simarm64-try
Cq-Include-Trybots: vm-kernel-nnbd-linux-release-x64-try
Cq-Include-Trybots: vm-kernel-nnbd-mac-release-x64-try
Cq-Include-Trybots: vm-kernel-nnbd-win-release-x64-try
Cq-Include-Trybots: vm-kernel-precomp-nnbd-linux-debug-x64-try
Cq-Include-Trybots: vm-kernel-precomp-nnbd-linux-release-simarm64-try
Cq-Include-Trybots: vm-kernel-precomp-nnbd-linux-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192380
Reviewed-by: William Hesse <whesse@google.com>
2021-03-22 12:52:46 +00:00
Alexander Thomas 03e8ddd13c [co19] Roll co19 to ae818220b12ec9c2470519db2c7167cbe4745e12
2021-03-22 sgrekhov@unipro.ru Fixes #1032. Change place where analyzer expects COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
2021-03-22 sgrekhov@unipro.ru Fixes #1027. Typo fixed
2021-03-22 sgrekhov@unipro.ru Fixes #1026. Missed experimental flag added
2021-03-22 sgrekhov@unipro.ru Fixes SDK issue #45381. Use 32-bit int boundaries for 32-bit systems
2021-03-19 sgrekhov@unipro.ru #1024. Tests that plays with the integers not representable in JS moved to separate files. These files will be skipped on JS

Cq-Include-Trybots: dart/try:analyzer-nnbd-linux-release-try,dart2js-nnbd-linux-x64-chrome-try,ddc-nnbd-linux-release-chrome-try,front-end-nnbd-linux-release-x64-try,vm-kernel-nnbd-linux-debug-x64-try,vm-kernel-nnbd-linux-release-simarm64-try,vm-kernel-nnbd-linux-release-x64-try,vm-kernel-nnbd-mac-release-x64-try,vm-kernel-nnbd-win-release-x64-try,vm-kernel-precomp-nnbd-linux-debug-x64-try,vm-kernel-precomp-nnbd-linux-release-simarm64-try,vm-kernel-precomp-nnbd-linux-release-x64-try
Change-Id: Idc63625a841f1f90b0cce5db9ca6add13e4d1192
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192303
Reviewed-by: William Hesse <whesse@google.com>
Commit-Queue: Alexander Thomas <athom@google.com>
2021-03-22 11:42:11 +00:00
Sergey G. Grekhov d99e7a9f92 [co19] typo fixed and tests that shifts big integers skipped on JS
Change-Id: Ie1cb192d21022a4c83eec5e49056533fd513607b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192140
Reviewed-by: Erik Ernst <eernst@google.com>
2021-03-22 11:42:11 +00:00
Leaf Petersen def73d62c6 Fix generic_function_type_argument_test
Change-Id: Ic8e043a25eaefa8852e81fbbb4f40ec4931c0dd9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192261
Auto-Submit: Leaf Petersen <leafp@google.com>
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2021-03-22 10:41:02 +00:00
Jens Johansen 86e296f3ce [CFE] Make fuzz testing work also when not skipping VM
Also "roll up" fuzz errors/craches to pass if not fuzzing.

Change-Id: Ie044f0c014504f11939d4ce50971bf31930f1193
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192144
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2021-03-22 10:12:52 +00:00
Jens Johansen f73b5af4a9 Revert "Ignore text that is not a valid error code in ignore comments"
This reverts commit 9bd1dc6be7.

Reason for revert: Ignoring 'lines_longer_than_80_chars' no longer works, and the CFE bots are purple because of it.

Original change's description:
> Ignore text that is not a valid error code in ignore comments
>
> As per discussions on https://github.com/dart-lang/sdk/issues/35234.
>
> Change-Id: I0e02f646db5328fde5ddc7301c9d76994eb33b4c
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192282
> Reviewed-by: Konstantin Shcheglov <scheglov@google.com>

# Not skipping CQ checks because original CL landed > 1 day ago.

Change-Id: I24d51b4c0eed6c68b2444bca8388db3c9b4f15a1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192302
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2021-03-22 08:59:22 +00:00
Konstantin Shcheglov 55b21adf6b Break raw type cycles via GenericFunctionType.
Change-Id: Ia1eb5660bf3085a52f3a449da5a3f88ecb81f0af
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192320
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-20 23:59:09 +00:00
Brian Wilkerson 9bd1dc6be7 Ignore text that is not a valid error code in ignore comments
As per discussions on https://github.com/dart-lang/sdk/issues/35234.

Change-Id: I0e02f646db5328fde5ddc7301c9d76994eb33b4c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192282
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2021-03-20 21:16:10 +00:00
Brian Wilkerson d56098f1d4 Fix an npe in AddStatic when the field declaration cannot be found
I wasn't able to find a test case that reproduced the bug.

Fixes: https://github.com/Dart-Code/Dart-Code/issues/3205
Change-Id: Ie45c76ef7ed18755ccc576ad9aa39ff35055233e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192281
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-20 20:00:29 +00:00
Brian Wilkerson 2fc98d71d8 Unify two hint codes for documentation purposes
Change-Id: Ia6f4fe0537e9ef0aa377aa48b624cb357b3d7c1c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192283
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-20 19:47:19 +00:00
Konstantin Shcheglov 9fc9088fef Issue 44926. Fix checking generic function type arguments for conforming bounds.
Bug: https://github.com/dart-lang/sdk/issues/44926
Change-Id: I92209fc4839c7d286f5efc5d9deb05e47e6cf017
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192280
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-20 19:39:09 +00:00
Alexander Aprelev f5432d7164 [io/http] Relax http parsing constraints around CRLF.
https://tools.ietf.org/html/rfc2616\#section-19.3 advises to
allow CR*LF wherever CRLF line terminator is expected.

Issue https://github.com/dart-lang/sdk/issues/43916

TEST=http_client_parser_crlf_tolerant_test, http_100_continue_test

Change-Id: I8c6d263bdb950b2f3992b69921eff0ee75704c10
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192120
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2021-03-20 03:11:28 +00:00
Ben Konyi f06348108a [ VM ] Update Timeline tests to not use recorder->Clear()
Also added IsOwnedByCurrentThread() assert for ReclaimCachedBlocksFromThreadsLocked

Follow up to a62e144882

TEST=runtime/vm/timeline_test.cc

Change-Id: Iec3597b407d99ada1894752f7150a9ae4025bf91
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192243
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2021-03-20 01:35:38 +00:00
Alexander Aprelev dd9b00f7b9 [vm/concurrency/debugger] Fix lock acquisition to avoid deadlocks.
TEST=break_on_function_many_child_isolates_test flaky failures on debug build

Fixes https://github.com/dart-lang/sdk/issues/45391

Issue https://github.com/dart-lang/sdk/issues/36097

Change-Id: I075318878f1e4b0f3f921377b0281b785274621e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192060
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2021-03-19 22:20:18 +00:00
Alexander Aprelev 2c5b320b14 [vm/concurrency/debugger] Fix pool patching synchronization for lightweight isolates breakpoints.
TEST=service/break_on_function_many_child_isolates_test

Issue https://github.com/dart-lang/sdk/issues/36097

Change-Id: I15b9d9db938042c89f21700876bf75d932f044a6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191781
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2021-03-19 20:24:48 +00:00
Ben Konyi 96cf91bea3 [ package:dds ] Update DDS dependencies and set SDK requirement to >=2.12
Also updated non-migrated libraries to include @dart=2.10.

Change-Id: Idcf4e54f9aa37b9b016133144af594cc932418a0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192122
Reviewed-by: Gary Roumanis <grouma@google.com>
2021-03-19 19:49:08 +00:00
Ben Konyi a62e144882 [ VM ] Ensure shared timeline objects are protected by locks
Timeline::Clear() could cause an user after free error if trying to allocate a timeline
event immediately after clearing the timeline buffer.

Timeline::Cleanup() could result in recorder_ being freed while timeline events are still
being processed.

Should fix https://github.com/flutter/flutter/issues/78076

TEST=tests/lib/developer/timeline_recorders_test.dart

Change-Id: Ia61b9c93986788c79ef6f2ff1907625b66fb4ea1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191802
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2021-03-19 18:47:32 +00:00
Nate Bosch c5d20296b5 Update to the latest package:http
Change-Id: I324e5eed5e9324cb4477cc56a523e881f750a021
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192121
Auto-Submit: Nate Bosch <nbosch@google.com>
Commit-Queue: Jake Macdonald <jakemac@google.com>
Reviewed-by: Jake Macdonald <jakemac@google.com>
2021-03-19 18:43:48 +00:00
Konstantin Shcheglov 78d9ce7820 Add myself to watch for tools/experimental_features.yaml changes.
Change-Id: I72ab91bde46b9b6181801c4ab0bfd591aabeddbf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192047
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-19 18:09:38 +00:00
Kallen Tu 45c9d8a25e [cfe] Enable recursive function calls for const functions.
Change-Id: Ia164adaf5da313cae4db2b3b326a909e57d8c07c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192200
Reviewed-by: Jake Macdonald <jakemac@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Kallen Tu <kallentu@google.com>
2021-03-19 17:56:17 +00:00
Johnni Winther 5c65c68669 [cfe] Handle cyclic bounds on generic function types as type arguments
This also handles reporting of cyclic bounds in parts and sets the
bound of a cyclic type parameter to InvalidType to avoid looping on
the bound later, as for instance in computation of NORM.

Closes #45330

Change-Id: Ida20dc5b44b08a6f8674a402d801314a9172fa8a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192142
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2021-03-19 17:54:37 +00:00
Daco Harkes 77dc74bcd5 [vm/ffi] Support packed Structs
Closes: https://github.com/dart-lang/sdk/issues/38158

This CL implements unaligned access for float/double on arm32, but does
not expose it in an API. Rather it only uses these loads/stores inside
the getters and setters of packed structs.
Bug: https://github.com/dart-lang/sdk/issues/45009

Besides unaligned access for float/double, this CL is mostly a CFE
change. The only VM change is reading the packing in the
`_FfiStructLayout` annotation.

The implementation of using the packing in the VM, and analyzer changes
have landed separately in earlier CLs.

tools/test.py ffi ffi_2
TEST=tests/ffi(_2)/(.*)by_value_(*.)_test.dart

Change-Id: Ic3106ecc626d2e30674a49bf03f65ae12d2b3502
Cq-Include-Trybots: luci.dart.try:dart-sdk-linux-try,dart-sdk-mac-try,dart-sdk-win-try,vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64-try,vm-kernel-asan-linux-release-x64-try,vm-kernel-mac-debug-x64-try,vm-kernel-linux-debug-ia32-try,vm-kernel-linux-debug-x64-try,vm-kernel-nnbd-linux-debug-x64-try,vm-kernel-nnbd-linux-debug-ia32-try,vm-kernel-nnbd-mac-release-x64-try,vm-kernel-nnbd-win-debug-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-debug-simarm_x64-try,vm-kernel-precomp-nnbd-linux-debug-x64-try,vm-kernel-precomp-win-release-x64-try,vm-kernel-reload-linux-debug-x64-try,vm-kernel-reload-rollback-linux-debug-x64-try,vm-kernel-win-debug-x64-try,vm-kernel-win-debug-ia32-try,vm-precomp-ffi-qemu-linux-release-arm-try,vm-kernel-precomp-obfuscate-linux-release-x64-try,vm-kernel-msan-linux-release-x64-try,vm-kernel-precomp-msan-linux-release-x64-try,vm-kernel-precomp-android-release-arm_x64-try,analyzer-analysis-server-linux-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/186143
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2021-03-19 15:34:42 +00:00
Daco Harkes e7acc69507 [vm/ffi] Support packed Structs backend - part 2
With packed structs, the x64 non-Windows ABI only put structs in CPU/FPU
registers when all it fields happen to be aligned. The previous CL did
not check the alignment of nested structs and structs in inline arrays
based on their offset in an outer struct.

Follow up of: https://dart-review.googlesource.com/c/sdk/+/186142.
Split off: https://dart-review.googlesource.com/c/sdk/+/186143.

Bug: https://github.com/dart-lang/sdk/issues/38158

tools/build.py run_ffi_unit_tests && tools/test.py ffi_unit
TEST=runtime/vm/compiler/ffi/native_type_test.cc
These tests are exercised on vm-precomp-ffi-qemu-linux-release-arm-try.

Change-Id: Ic64bdef2c13ac737dbf58864911f043fc7a3d831
Cq-Include-Trybots: luci.dart.try:vm-precomp-ffi-qemu-linux-release-arm-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191720
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2021-03-19 15:34:42 +00:00
Tess Strickland 6d1ea68cc9 [build] Move from the C++11 to the C++17 standard.
Also includes some example changes using C++14/C++17 features.

TEST=vm/cc/BitField_Assert

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-win-release-x64-try,vm-kernel-precomp-mac-release-simarm64-try,vm-kernel-precomp-linux-release-x64-try,dart-sdk-win-try,vm-kernel-win-release-x64-try,vm-kernel-win-release-ia32-try,dart-sdk-mac-try,vm-kernel-mac-release-x64-try
Change-Id: Icf5c5267431daf9cea2e61b67131021557675f3c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192183
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Tess Strickland <sstrickl@google.com>
2021-03-19 15:29:57 +00:00
Martin Kustermann caa31f55be [vm/compiler] Make codegen of InstantiateTypeArgumentsInstr sharable
Simplifies work for adding deopt info to this IR instruction.

Issue https://github.com/dart-lang/sdk/issues/45213

TEST=Existing test suite.

Change-Id: Ia0936647f8f025397131b6d89764885a79cba9c7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192185
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2021-03-19 15:04:37 +00:00
Brian Wilkerson c5d01ec4f7 Remove a couple of ignore-in-file comments and make one more unnecessary in generated code
Change-Id: I8313fe2b4c3908dd5751f7eeca417adfcb2e5790
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192040
Reviewed-by: Danny Tuppeny <danny@tuppeny.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-19 14:44:27 +00:00
Jens Johansen 20cfdeffe5 [CFE] Include .crash_dart in weak tests; better handling of erroneous -D parameters and expectationFileMismatchSerialized on -DupdateExpectations=true
Change-Id: I00da3e4cf8859c65a8d93600804c7dbc56ec0bca
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192180
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2021-03-19 13:34:17 +00:00
Martin Kustermann 3930eb8fce [gardening] Mark class as entrypoint to preserve name in obfuscation mode
Fixes https://github.com/dart-lang/sdk/issues/45385

TEST=Fixes service/allocation_test in obfuscation mode.

Change-Id: I80ac204866c5224cf88d2f5f2079655e224691c8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192143
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
2021-03-19 13:15:29 +00:00
Tess Strickland d504084f42 [vm] Fix uses of NullIsAssignableTo at runtime.
NullIsAssignableTo only takes the type to check for nullability.
However, while a type parameter may itself be non-nullable, its
instantiation with a nullable type is nullable.

Thus, this CL adds type instantiation before runtime uses of
NullIsAssignableTo in Function::DoArgumentTypesMatch.

Fixes https://github.com/dart-lang/sdk/issues/45270

TEST=vm/dart/regress_45270

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-nnbd-linux-release-simarm64-try,vm-kernel-precomp-nnbd-linux-release-simarm_x64-try,vm-kernel-precomp-nnbd-linux-release-x64-try,vm-kernel-nnbd-linux-release-ia32-try,vm-kernel-nnbd-linux-release-simarm-try,vm-kernel-nnbd-linux-release-simarm64-try
Change-Id: Iaefffe9ab6d4d3ad889c4962489b2153d2bbaee1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190443
Commit-Queue: Tess Strickland <sstrickl@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2021-03-19 12:29:27 +00:00
Alexander Thomas f38081d1ff [sdk] Add analysis_server.dart.snapshot to ARM SDKs.
Fixes https://github.com/dart-lang/sdk/issues/41845.

Change-Id: Ib1558472dfef0d4c815e5ba870d087fdf18f6862
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191922
Reviewed-by: William Hesse <whesse@google.com>
Commit-Queue: Alexander Thomas <athom@google.com>
2021-03-19 12:03:48 +00:00
Johnni Winther 9ad76fe7bd [cfe] Support annotations on function type parameters
The fix includes processing of type parameters elsewhere and also
adding support for annotations on extensions.

Closes #28981

TEST=existing

Change-Id: I71ab5640bd3a16f4a024b6edd047a525eed1c399
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191404
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2021-03-19 11:52:57 +00:00
Alexander Markov c665bac02d [vm/compiler] Follow-up to SupportsUnboxedInt64 cleanup
This is a follow-up to https://dart-review.googlesource.com/c/sdk/+/191761.
That change removed FlowGraphCompiler::SupportsUnboxedInt64() which is
always true, but incorrectly changed

  return (compiler::target::kSmiBits >= 32) ||
         FlowGraphCompiler::SupportsUnboxedInt64();

to

  return (compiler::target::kSmiBits >= 32);

in CanUnboxInt32(). That resulted in a performance regression on
golem benchmarks as certain methods were not inlined.

This change cleans up CanUnboxInt32() as it is also always true.

TEST=Manually verified one of the benchmarks on IA32.

Change-Id: I9fd72f3adc27e2e31340559cf79df1701bd98da7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192062
Auto-Submit: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2021-03-19 03:56:14 +00:00
Martin Kustermann dbd2c76e22 [vm/compiler] Remove InstanceOf runtime call from IL instruction, call stub instead
Having pushed arguments inside generated code makes deopt environments
incorrect, so we'll move all runtime calls out of IL instructions into
stubs.

Issue https://github.com/dart-lang/sdk/issues/45213

TEST=Existing test suite.

Change-Id: I843ba1ba626c3d704d75d4a7088752100ddfb906
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191900
Reviewed-by: Tess Strickland <sstrickl@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2021-03-19 03:53:24 +00:00
Nicholas Shahan 453b06d222 [tests] Remove triple shift test skips from status files
There are also skips for these tests in the legacy (*_2) suites.
I'm leaving those as skips because I think they will never be
expected to work since you have to opt into a newer language
version to get the feature.

Change-Id: I1631b1523c6a9be9a14c69c8cf772ea58309c706
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191482
Commit-Queue: Nicholas Shahan <nshahan@google.com>
Reviewed-by: Stephen Adams <sra@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2021-03-19 02:32:34 +00:00
Konstantin Shcheglov 8fd3962363 Fix for accessing CompilationUnitElement.mixins without types.
Bug: b/182750371
Change-Id: I6e15f5f1551b9817eaab503a81597e0d13c77d01
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192041
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-19 00:27:46 +00:00
Ryan Macnak da5fa77042 [vm] Avoid populating page table entries for the compressed heap up front.
TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/45331
Change-Id: I1bb8e7ea3fce88dceb28edf8a81cee48db83f144
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191982
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Liam Appelbe <liama@google.com>
2021-03-18 23:04:14 +00:00
Ryan Macnak 19e5899a02 [vm] Switch most non-Instances to compressed pointers.
The following are not compressed: Code, ObjectPool, Context, CallSiteData and subclasses.

Code::instructions_ is uncompressible because the VM doesn't control the address of Instructions when they are loaded via dynamic library.

Loads from the ObjectPool are a frequent occurrence in generated code, and shrinking ObjectPool entries would be offset by longer code sequences to decompress them. Also, some ObjectPool entries contain uncompressible pointers to C functions.

Context is not compressed based on reports from earlier work on compressed pointers that compressing them is disproporately bad for performance. The earlier work used a different, more-expensive compression scheme, so we should reinvestigate this.

CallSiteData et al. are on the hot path for unoptimized code but make up a comparatively small portion of the heap size.

TEST=ci
Change-Id: I9a425fa4e12113c9fd0b51999525d32a7e589a90
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190600
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Liam Appelbe <liama@google.com>
2021-03-18 22:52:04 +00:00
Ryan Macnak c5eaf317b6 Revert "[vm, compiler] Convert binary Smi ops to graph intrinsics."
This reverts commit 051ec30ff0.

Reason for revert: Failures on ARM32 AOT

Original change's description:
> [vm, compiler] Convert binary Smi ops to graph intrinsics.
>
> Keep left shift as an ASM intrinsic because it includes fallbacks to Mint operations on 32-bit architectures that graph intrinsics aren't good at expressing.
>
> This should be close to neutral on performance, but removes a fair amount of redundant code.
>
> TEST=ci
> Change-Id: Ic9c7d3b2d015ebf31972163a58c6bc9a27bad4ca
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/187164
> Reviewed-by: Alexander Markov <alexmarkov@google.com>
> Commit-Queue: Ryan Macnak <rmacnak@google.com>

TBR=rmacnak@google.com,alexmarkov@google.com

Change-Id: I2a08df5b4aa0269a6237a3d967729c155c88a1c7
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192061
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2021-03-18 22:11:56 +00:00
Konstantin Shcheglov 2cbb67e5db More tests for resolution and evaluation of metadata.
Change-Id: I4435936d98764650e2f7a278f92e452e3dbfda23
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191986
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-18 21:21:43 +00:00
jonahwilliams 48e952470a [vm_snapshot_analysis] bump dependency constraints
Flutter cannot update args dependency due to <2.0.0 constraint in package:vm_snapshot_analysis.

TEST=pkg-linux-release-try

Fixes #77856

Cq-Include-Trybots: luci.dart.try:pkg-linux-release-try
Change-Id: I93a057d023efe95a13a9a95d85b9405bf9de5ece
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191988
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Kenzie Schmoll <kenzieschmoll@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Jonah Williams <jonahwilliams@google.com>
2021-03-18 21:18:53 +00:00
Sam Rawlins ef7a1cb60f analyzer: Allow excludes list which includes some non-Strings
Remove top-level toStringList yaml utility.

Add related TODOs.

Change-Id: I6da4f70ed4f2823c156edd3ae3b803b581e5d9be
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191984
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2021-03-18 21:12:03 +00:00
pq 5b5ed5793f bump to linter 1.1.0
EDIT: see discussion below about breaking changes in `prefer_const_literals_to_create_immutables`.

EDIT2: looks like this was fixed upstream in analyzer 👍

Change-Id: I3fca9d074cece9cb60b8e97bdb72aa3bd3b2c2a8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191762
Commit-Queue: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-03-18 20:49:33 +00:00
Ryan Macnak 051ec30ff0 [vm, compiler] Convert binary Smi ops to graph intrinsics.
Keep left shift as an ASM intrinsic because it includes fallbacks to Mint operations on 32-bit architectures that graph intrinsics aren't good at expressing.

This should be close to neutral on performance, but removes a fair amount of redundant code.

TEST=ci
Change-Id: Ic9c7d3b2d015ebf31972163a58c6bc9a27bad4ca
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/187164
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2021-03-18 20:33:34 +00:00
Brian Wilkerson ec04c1f335 Remove some unnecessary ignore comments
Change-Id: Iafa4b9c8aa5dc696c5746248a8701b4f6e875979
TEST=Existing tests.
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191980
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Nicholas Shahan <nshahan@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
2021-03-18 19:58:43 +00:00
Paul Berry 847b2b1e11 Move "argument not assignable" checking to ResolverVisitor.
This should make it easier to implement "why not promoted" logic for
arguments, since we'll be reporting the errors at a time when flow
analysis information hasn't been discarded yet.

Bug: https://github.com/dart-lang/sdk/issues/44898
Change-Id: I8499d711acc88b8397597b6116e5f6cfde43dc53
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191805
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-03-18 19:52:13 +00:00
Paul Berry 681d3e2a43 Allow the expensive parts of "why not promoted" computation to be deferred.
This is necessary because `whyNotPromoted` needs to be called right
after visiting a subexpression, but it's not always possible to tell
that the type of that subexpression will result in an error until more
code has been visited.

Change-Id: If44e2bb55612c1ba7996b523c3ec078d7b80c865
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191601
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2021-03-18 19:52:13 +00:00