Commit Graph

79322 Commits

Author SHA1 Message Date
Konstantin Shcheglov ca736dbcdb Resolve typeArguments of Annotation.
We don't have yet full implementation, but this fixes the crash.

Bug: https://github.com/dart-lang/sdk/issues/45119
Change-Id: I0d6aba7c53bf4a9c707c4cbeff8a5c81040f2712
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188980
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-04 06:58:35 +00:00
Konstantin Shcheglov e6dbabd477 Issue 45161. Ignore YAML parsing exceptions in analysis_options.yaml
Bug: https://github.com/dart-lang/sdk/issues/45161
Change-Id: I14169cdb0f39e95612a21266cc7e6cf72141e2d6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188960
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-04 01:38:15 +00:00
Devon Carew bb3167fe53 [analyzer] always show context messages for 'dart analyze'
Change-Id: Ifda063de48a968f7ef013c501f6db9bec7f13246
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188001
Commit-Queue: Devon Carew <devoncarew@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-03-04 01:00:16 +00:00
Ryan Macnak 8c1cb52c5a [vm, arm64] Fix encoding of immediates in some 32-bit operations.
TEST=ci
Change-Id: I53333355f04636ed49e9a05aeaf1378ea2dd35a0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188601
Reviewed-by: Liam Appelbe <liama@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2021-03-03 23:54:45 +00:00
Paul Berry 8be535350d Flow analysis: improve handling of types in "why not promoted" logic.
This CL plumbs the types of `this` and property get expression from
the CFE and analyzer into flow analysis, so that flow analysis will be
able to create more accurate "why not promoted" information for those
expression types.  This made it possible to eliminate a clumsy aspect
of the previous implementation, namely that we would consider a
promotion attempt like `if (x.y == null) return;` as an attempt to
promote the type of `x.y` to `Object`; now we compute the type the
user is actually trying to promote to, so we will be able to generate
more accurate "why not promoted" messages.

Bug: https://github.com/dart-lang/sdk/issues/44898
Change-Id: I67f9fc59e72103194a1ea6b1c4dfeae8aeb194a2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/187064
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-03-03 23:16:55 +00:00
pq c43be3487b bulk fix support for REMOVE_UNNECESSARY_PARENTHESES
Change-Id: I4ce0336398adab64ba6bd811ab918d3f77a0c6cf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188880
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
2021-03-03 23:01:15 +00:00
Liam Appelbe 8463e5623b Port package:wasm to new FFI Opaque structs and Allocator API
Bug: https://github.com/dart-lang/sdk/issues/37882
Change-Id: Ibdc64d594ac1645a566477e083d79fe23b0e3ee5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/181060
Commit-Queue: Liam Appelbe <liama@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
2021-03-03 22:35:14 +00:00
Sam Rawlins 8d7dfd6769 Analysis_server: Improve add_null_check fix
This adds add_null_check support for prefix operations, postfix operations,
binary operations, and cascades.

Bug: https://github.com/dart-lang/sdk/issues/43708
Change-Id: I2d1e80f2ccad58adfbac72400ce44efd48751833
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188740
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2021-03-03 22:31:14 +00:00
Konstantin Shcheglov 26fce2a64a Fixes for plugin_manager_test.dart to work on Windows.
Change-Id: Icf36f67acf716d6b4c0ce534c8fb865e3a97d5ae
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188840
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-03-03 22:22:34 +00:00
Konstantin Shcheglov 034fab2046 Skip symbolic link tests on Windows.
We need at least Windows 10, after 2016 to support it.

Change-Id: I1f1a3df95f70b770d434343bf5f66ba9ab33c6a4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188860
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-03 22:21:24 +00:00
Konstantin Shcheglov 52ea1fd237 Fix for CiderFixesComputerTest on Windows
TBR

Change-Id: Iad1b8148bdc1d87ed57b8eec5593c09a9b4e5148
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188900
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2021-03-03 21:57:15 +00:00
Liam Appelbe b6188939ec [vm] Align compressed pointer allocations on Fuchsia.
TEST=Local testing using Fuchsia emulator
Change-Id: I6946f07b8abab534986d7c23284e6e250c13b822
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188080
Commit-Queue: Liam Appelbe <liama@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2021-03-03 21:51:24 +00:00
Konstantin Shcheglov beb216035f Regenerate diagnostics.md
R=brianwilkerson@google.com

Change-Id: Ib5a1d21905d403304bdf3312894ed3d069c1ee66
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188821
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-03 21:21:16 +00:00
Brian Wilkerson 38a4d48974 Fix bugs in convert_to_generic_function_syntax
Fixes: https://github.com/dart-lang/sdk/issues/45178
Change-Id: Idcdb392637c85225caeba0bab3f539e30abf55f7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188742
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-03 21:10:34 +00:00
Konstantin Shcheglov e64981d94e Use getDriverFor() and check for null.
I see that sometimes we get a watcher event that AndroidManifest.xml
was changed, and we don't have the corresponding analysis context.
I suspect that these events are buffered, so we quickly first get
an event that forces us to re-create analysis contexts, and then
the event about AndroidManifest.xml, and if the new set of analysis
contexts does not include the AndroidManifest.xml, we get null.

Change-Id: Ie0bcfbb8f7baa6b6335bf6326f2ea2b7093a1b67
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188741
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-03 20:32:44 +00:00
pq 944169ad81 fix attempts to fix lints not in the producer map
Fixes: https://github.com/dart-lang/sdk/issues/45177

Change-Id: Id3282f69ee1639b45f5de938f30ae414cee4a3cf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188780
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
2021-03-03 20:01:04 +00:00
Konstantin Shcheglov 7d67f3ee5c Rewrite analyzer_cli batch mode using AnalysisContextCollection.
Change-Id: I0765df20f24ebf37b49a8a622a072e4d67f74845
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188582
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-03 19:30:24 +00:00
Kenzie Schmoll c0c56b0592 Fix a couple typos in vm_service
TEST=N/A

Change-Id: I3a9bee58e7dd28ea54933dc229f91339e9d0a0a9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188760
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2021-03-03 19:27:22 +00:00
pq 64ea51988a bump to linter 1.0.0 (NNDB)
Change-Id: Ic792d7521b3519edb630003bdb164f3308a74e32
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188261
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
2021-03-03 18:56:54 +00:00
pq 4b35c50cbd fix all support for ADD_NE_NULL
Change-Id: I03e09133fa8af48da1395a538c042c1ee33137de
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188681
Commit-Queue: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-03-03 18:22:24 +00:00
Martin Kustermann ab5d639e36 [vm/concurrency] Lookup & set error class during bootstrapping instead of lazily
Closes https://github.com/dart-lang/sdk/issues/45176

TEST=Fixes flaky tsan error of vm/dart_2/isolates/reload_no_active_stack_test

Change-Id: I7839ec4aa8fe66acbe709e379afbc65ca2e973a2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188721
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2021-03-03 18:18:14 +00:00
Martin Kustermann 187117ddf4 [vm/concurrency] Allow concurrent calculation of Class::num_type_arguments_
The lazily calculated value can be calculated concurrently and installed
in arbitratry order as long as all writers write the same value (which
they should).

There's no need to guard it with a lock.

Closes https://github.com/dart-lang/sdk/issues/45175

TEST=Refactoring of existing code, fixes flaky tsan reports.

Change-Id: Iaa45cf3b70300958acc04953e37599836436bc59
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188720
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2021-03-03 17:14:48 +00:00
Danny Tuppeny d901f7326a [Analyzer] Add code completion for Pub package names
Change-Id: I0fa8fb1c2801e2acb2d2cf75f7efecf4f9058eeb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176120
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Jonas Jensen <jonasfj@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-03 17:12:58 +00:00
Johnni Winther dd1c3a3233 [vm] Make async transform resilient in context of invalid type and never type of iterables
The CFE can invoke transformations despite having compile-time errors.
The async transform was crashing the compiler if it hits for-in
iterables that have an invalid type or never type.

In case of an invalid type, the program has a compile-time error and
won't be able to run propertly. So we'll replace the entire for-in with
an invalid expression statement if the iterable is an invalid
expression.

In case of a never type, the program should compile fine, which this CL
also fixes.

This makes the newly added tests no longer result in DartkCrash but
rather in a compile-time error (invalid expression) or runtime-error
(never type).

Closes https://github.com/dart-lang/sdk/issues/45014

Change-Id: Ic50f68400b67b57dd4a2c0a125b08f0f3e0d8dd6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188463
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2021-03-03 11:58:08 +00:00
Martin Kustermann 700ba716cd [vm/concurrency] Avoid O(n) traversal of isolates to find pending deopt
To avoid a O(n) traversal of isolates in order to find pending deopts,
we'll move the pending deopt state to the Thread. It's really a property
of a thread: when the thread's stack gets unwound - via return or
exceptional flow - we remove pending deopts.

This CL also encapsulates the pending deopt logic into a [PendingDeopts]
class - thereby avoiding logic around manipulating this array being
spread around. It simplifies the already very big [Isolate] class.

TEST=Refactoring of existing code.

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

Change-Id: I5a9b18c577f21a0f2a88332b1bc26641ec39d2af
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188521
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2021-03-03 09:31:53 +00:00
Martin Kustermann 197fe0c193 [vm] Make reload tests NOP in product mode
TEST=Fixes failures on product mode.

Change-Id: I2cb00bbbcd18a7835ead301946457aa773edbf99
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188700
Reviewed-by: Tess Strickland <sstrickl@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2021-03-03 09:24:48 +00:00
Aske Simon Christensen 76d77603e9 [kernel] Fix typos in interfaceTarget setters
Change-Id: I93d8fb682b7538a048e862db765c0e3d907b1130
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188522
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
2021-03-03 09:23:48 +00:00
Clement Skau e1df4361b1 [ffi] Makes FFI dyn.lib. fail more verbose.
This helps you figure out which load failed when running
a bigger test suite, where multiple libraries loaded.

TEST=CQ

Change-Id: I00d89d7732cd38a06b5b6256c6086cfa232bb76f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188464
Auto-Submit: Clement Skau <cskau@google.com>
Commit-Queue: Clement Skau <cskau@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
2021-03-03 08:10:18 +00:00
pq e7644d9a4c fix all support for REMOVE_UNUSED_IMPORT
* adds support for non lint fix all fixes
* enables multi fix for REMOVE_UNUSED_IMPORT

Change-Id: Ib08e82686622d449592cd899df8d63873232a703
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188587
Commit-Queue: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-03-03 02:58:57 +00:00
Alexander Aprelev 5f7e027c27 [gardening] Ensure path is converted to uri in reload tests.
Follow-up to 91c628d63a

Change-Id: I2504d0b69c060b5d77002b3b0c58ec0ff6e0a4af
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188640
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2021-03-03 00:03:37 +00:00
Ben Konyi 06e5c3e90a [ package:vm_service ] Fix capture_stdio_test on Windows
TEST=pkg/vm-service/test/capture_stdio_test.dart

Change-Id: Iaecd5c3535f7aaf632f59973236aba056bb01506
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188641
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2021-03-02 23:41:46 +00:00
pq f5d71fd1fe enable lint fix-in-file processing
Replaces: https://dart-review.googlesource.com/c/sdk/+/186220

Note:

* this is only for lint producers
* `VerificationTests` ensure that file multi-fixes are tested (as bulk fixes)

Change-Id: Ia2543a31bc9db2cd8ff9c5757e4695a0302fe9b1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188585
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
2021-03-02 22:48:17 +00:00
Brian Wilkerson 61d09495b9 Add code to support comparing the quality of code completion relevance tables
Change-Id: Ib4500712e3e63114a357af8cf2c2479b70cc27d5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188583
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2021-03-02 22:37:47 +00:00
Konstantin Shcheglov d7dc1bfc45 Don't (re)discover analysis contexts in ContextBuilder.
Change-Id: I4079ec180f759c29ac51af989de30751673f6432
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188584
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-02 22:35:17 +00:00
Ben Konyi 86c0d1199c [ VM / package:vm_service ] Fix issue where events were only sent over Stdout and Stderr streams when Debug stream was active
TEST=pkg/vm_service/test/capture_stdio_test.dart
Change-Id: I9029f1c42455b7d757aa5d424e05b5d45a048c4a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/185483
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2021-03-02 21:47:27 +00:00
Paul Berry 32255a579b Migration: fix race condition with null navigationTree.
If the user tries to click around in the migration web UI before the
navigation tree has finished loading, the `navigationTree` global
variable will still be null; we need to allow for this possibility to
avoid a crash.

Bug: https://buganizer.corp.google.com/issues/181067935
Change-Id: I5398ac62bb4eb307aaa48ec39098b6ae0541a6a9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188560
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-03-02 21:33:27 +00:00
Martin Kustermann 91c628d63a [vm/concurrency] Final support for hot-reload of multi-isolate groups
This is the initial implementation of hot reload with multi-isolate
groups.

Implementation:

As before, when a service API call triggers a reload it will be routed
as an OOB message to a specific isolate (**). As opposed to before, that
isolate has now to coordinate with all other isolates, ensuring that it
"owns" the reload and all other isolates are waiting in a state that
allows reload.

This is implemented as a [ReloadOperationScope] which first participates
in other reloads (if there are any) and then owns the reload. It will
send a new kind of service message to all other registered isolates. All
of them have to check in before reload can proceed. If a new isolate
is about to join the group, it will participate when registering the
isolate. If an old isolate wants to die, it will participate when
unregistering the isolate.

This means that in addition to the existing StackOverFlow checks that
can process OOB messages and therefore reload, we'll have isolate
registration and unregistration as well as a new
Isolate::kCheckForReload OOB message handler where an isolate can
participate in a reload.

We consider the isolate group to be reloadable if the main isolate has
loaded the program and set the root library. Helper isolates don't need
to load any more kernel code and only initialize core libraries, so it's
fine to reload them during this time.

(**) The reason we continue to send reload service API calls to any
isolate in an isolate group is that re-loading might involve calling out
to the embedder's tag handler. Doing so currently requires an active
isolate.

If we allowed a subset of dart_api.h (the subset needed by the tag
handler) to be used only with an active IsolateGroup instead of an
active Isolate we could remove this requirement.

Edge cases:

There's various edge cases to consider: The main edge case is, we currently
maintain an upper limit to the number of isolates executing in parallel
(to ensure each can have big enough chunk of new space, i.e. TLAB).

If there are more isolates with active work they are waiting until one
of the exiting ones "yields". To ensure progress, if any such actively
running isolate gets a request to participate in a reload, it will mark
its own thread as "blocked" and therefore "yields", so another isolate
can make progress until all isolates are participating and the reload
can start.

Marking an isolate as "blocked" happens by exiting that isolate. It will
free up it's TLAB, decrease active mutator count and (if running on VM's
thread pool) also temporarily increase the thread pool size.

The side-effect of this is that it will use one pthread per isolate
during reload. In the future we can extend this first implementation, by
specially handling isolates that don't have a message handler running.
Doing so would require careful consideration to avoid races.

Testing:

In order to test this we use a small helper framework for reload tests.
The helper framework will, similar to real world reload e.g. in flutter,
will spawn a subprocess. It will use the service API to trigger reloads
in this subproces.

To synchronize between the reload driver and the application being
reloaded it allows watching for events to be printed to stdout/stderr.

The reload test itself can be written - similar to multitests - with
annotations such as `// @include-in-relload-0` in them. The testing
framework will then generate multiple application versions that all get
compiled to kernel.

For simplicity we generate the kernel using the standalone VM with
`--snapshot-kind=kernel` and avoid using the incremental compiler.

There are 4 different tests exercising different aspects of
multi-isolate reload:

  vm/dart_2/isolates/reload_active_stack_test:
    Performs a reload while a fixed number of isolates have an active
    stack, thereby ensuring e.g. that all frames of all isolate mutator
    stacks get deoptimized, ...

  vm/dart_2/isolates/reload_no_active_stack_test:
    Similar to the test above, but instead of having an active stack the
    isolates can yield to the event loop, possibly be even descheduled

  vm/dart_2/isolates/reload_many_isolates_test:
    Similar to the test above, but this test uses many more isolates.

  vm/dart_2/isolates/reload_many_isolates_live_and_die_test:
    Performs a reload where isolates get spawned and die all the time.
    There are always P isolates alive at any given point in time, each
    of them spawns children when their parent has died.
    Performing a reload catches isolates as various stages of their
    lifecycle and can therefore cover a lot of corner cases.

TEST=vm/dart_2/isolates/reload_*_test.dart

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

Change-Id: I97039b4084de040b7f2e22f5832a40d57ba398d5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/187461
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2021-03-02 18:57:02 +00:00
Konstantin Shcheglov 60732555f7 Remove 'await null' from analyzer_cli.
R=brianwilkerson@google.com

Change-Id: Ib87ad09e313ec82d3d63744b52c071cb38e72059
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188580
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-02 18:45:22 +00:00
Alexander Markov 16a521c532 [infra] Add builders for testing AOT with dwarf stack traces
AOT in PRODUCT mode with --dwarf_stack_traces performs more aggressive
optimizations of snapshot contents (compared to other modes).
This mode is now used in certain internal apps, so it should be
tested more thoroughly.

This change adds new builders which would enable testing of
--dwarf_stack_traces mode.

Change-Id: I866ef5b0dae2f0d5cbf0cfbc1c161259b7b4a523
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188140
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2021-03-02 17:58:23 +00:00
Danny Tuppeny 5c2afd5e34 [analyzer] Base LSP filterText on displayed label, not inserted text
Fixes https://github.com/dart-lang/sdk/issues/45157.

Change-Id: I13d42a1c37b30c8e4d7969a6a20ed14f9fd1f0b9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188466
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-02 17:41:32 +00:00
Konstantin Shcheglov a4529db02b Explicitly analyzed directories and files are analyzed even if excluded by globs.
Change-Id: I6640f372d8494498facb5ad68bb8bf703aeb0e58
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188342
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-03-02 17:29:04 +00:00
Konstantin Shcheglov 4128d005b7 Remove migration hints from analyzer/.
Change-Id: I9d3f529b8a2ae7e78dfdd913e8b79cb1a39c891c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188380
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-02 17:23:02 +00:00
Alexander Aprelev c22205c14e [vm/concurrency] Ensure write program_lock is held while updating class state via set_state.
Fix tests and AllocateObject.

Hopefully addresses flaky https://github.com/dart-lang/sdk/issues/44940

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

TEST=ci and standalone_2/out_of_memory_recovery_test.dart

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-product-x64-try,vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-linux-debug-x64-try,pkg-mac-release-try

Change-Id: Ife775f7a0bcdd343b887ba1bf912e07b2a8430c8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188362
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2021-03-02 16:28:12 +00:00
Danny Tuppeny f03ec46eff [analyzer] Detect completion inside comments at the end of file
Fixes https://github.com/dart-lang/sdk/issues/33183.
Fixes https://github.com/Dart-Code/Dart-Code/issues/3170.

Change-Id: Ia8c76ace89e424f5cca08120282e886e7567ee2f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188462
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-02 16:25:04 +00:00
Martin Kustermann 5e51ee2e01 [vm/concurrency] Remove NoReloadScope where its not needed
The kernel loader works without an active isolate. It no longer causes
execution of Dart code. Constants are evaluated in CFE and are simply
"deserialized" by the kernel loader.

Since kernel loader doesn't execute Dart code and also doesn't process
OOB messages at any point, there's no reason to have a [NoReloadScope]
in it.

Formatting language errors seems to be done purely in the VM and should
therefore also require no [NoReloadScope]

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

TEST=Refactoring of existing code.

Change-Id: I80b2888b60a4d7d179988b8606cd7ca0893a2fa4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/187400
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2021-03-02 16:17:32 +00:00
Danny Tuppeny f77eba360e [analyzer] Generate completion text more suited to replacements for LSP
Change-Id: Id8c20ea7e1c32759673c32c9f4b363345bc23116
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188290
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-02 16:14:12 +00:00
Clement Skau 4235154e3d [ffi/benchmark] Refactor FfiCall benchmarks.
Inlines in the test classes:
- Native function lookup.
- The main benchmark loop.

This CL contains the refactoring necessary to update the
benchmarks to include leaf calls, as seen in:
https://dart-review.googlesource.com/c/sdk/+/179768

TEST=tools/build.py -m release dart && out/ReleaseX64/dart benchmarks/FfiCall/dart{,2}/FfiCall.dart

Change-Id: I1e85f991d895862c27ae99a71f5d4785ccdf5676
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188465
Commit-Queue: Clement Skau <cskau@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
2021-03-02 16:06:22 +00:00
Martin Kustermann e2be5322e6 [vm] Use custom realloc() on Windows
Seemingly Windows doesn't always implement realloc() by freeing space if
the new buffer is significantly smaller than the old one.

This CL does so manually in our code base.

Issue b/178993708
Issue https://github.com/dart-lang/sdk/issues/44846

TEST=standalone{,_2}/io/large_file_read_small_file_test

Change-Id: I370346a693f8e8e879e079d91e9de5c756949a11
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183694
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2021-03-02 16:02:52 +00:00
Martin Kustermann 3fac077ebc [vm/concurrency] Use relaxed atomics when accessing usage counters - for TSAN
For now our decision is to not synchronize access to usage counters and
instead let there be possible non-observable writes (if two concurrent writes
happen).

Though TSAN will report concurrent access in C++ to the usage counters
as a race, so we'll use a relaxed atomic.

(We do have non-synchronized access to the usage counters already:
If the mutator kicks of a background compilation, the BG compiler
might reset the counters while mutator is running.)

Closes https://github.com/dart-lang/sdk/issues/45134

TEST=Fixes flaky tsan errors.

Change-Id: I7919747536d43094e7201e03f464e4ac7b1a4740
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/187923
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2021-03-02 15:53:22 +00:00
Danny Tuppeny ff61ff7d33 [analyzer] Call toJson() on items in Lists when generating LSP json
Change-Id: I9f5876dc577499ae609079eaecae6a3eb47535d7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188288
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-03-02 15:24:38 +00:00