Commit Graph

14740 Commits

Author SHA1 Message Date
Alexander Markov 18b5ecdfc9 [vm] Cleanup dead code around TypeArgumentClassFinder
TypeArgumentClassFinder.FindClass always returns null (because
non-null values are never stored to TypeArgumentClassFinder::klass_).

Consequently, code using TypeArgumentClassFinder
(TypeUsageInfo::PropagateTypeArguments) seems to be redundant and
can be removed, along with another utility class
TypeArgumentInstantiator.

TEST=ci

Cq-Include-Trybots: luci.dart.try:vm-aot-linux-debug-x64-try,vm-aot-linux-release-x64-try
Change-Id: I7bfc98e5c4d5b4d3effa639031ae4bd6dce25643
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/295382
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2023-04-17 16:26:35 +00:00
Derek Xu 8df1b88877 [VM/Service] Create JSONBase64String class
TEST=CI

Change-Id: Ia14fcb1788a2685bef4fd61babfdd7089dd85a06
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/287801
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Derek Xu <derekx@google.com>
2023-04-17 15:58:28 +00:00
Derek Xu b4aa83b0b7 [VM/Service] Rename JSONStream::AppendSerializedObject to JSONStream::AppendBytes
TEST=CI

Change-Id: I2bb950c608716156e0dfe357a0fd481463b8d0dc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/287800
Reviewed-by: Ben Konyi <bkonyi@google.com>
2023-04-17 15:58:28 +00:00
Derek Xu 4cd9c9c666 Reland "[VM] Begin supporting Perfetto file recorder"
This is a reland of commit 7424295ce9

The differences between this reland and the original CL are: now the
Perfetto file recorder does not get built in PRODUCT builds, and it does
not get built unless the SUPPORT_PERFETTO macro is defined.

TEST=Recorded traces with the Perfetto file recorder and explored them
in Perfetto's trace viewer, CI

Original change's description:
> [VM] Begin supporting Perfetto file recorder
>
> This CL adds the `TimelineEventPerfettoFileRecorder` class, which is a
> timeline recorder that writes a trace to file in Perfetto's proto
> format. This CL supports the recording of all types of timeline events
> except flow events. Support for flow events will be added in a future
> CL.
>
> TEST=Recorded traces with the Perfetto file recorder and explored them
> in Perfetto's trace viewer, CI
>
> Change-Id: Iaa2051e536589a473c5e15f9de9bb9c251f13d38
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278942
> Reviewed-by: Ben Konyi <bkonyi@google.com>
> Commit-Queue: Derek Xu <derekx@google.com>

Change-Id: I8713f704b5fbeed5f1231012bce8a32aaf566ae4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/286020
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Derek Xu <derekx@google.com>
2023-04-17 14:42:50 +00:00
Ryan Macnak 26f235faf5 [vm] Don't hold function.CurrentCode across the Dart entry safepoint transition.
Also remove edge cases now that constant evaluation does not invoke generated Dart code.

TEST=none
Bug: https://github.com/dart-lang/sdk/issues/52035
Change-Id: Ia6cd733e10dbba2b6f480308d6225c210ea100b5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/295103
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2023-04-14 03:09:39 +00:00
Ryan Macnak d6abb7b89a [vm, gc] Fix scavenger deleting heap sampler entries for collected objects.
TEST=lsan
Bug: https://github.com/dart-lang/sdk/issues/52029
Change-Id: I4ea03a4b5cead076547423ff5dedc4b988e5111d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/295160
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2023-04-13 23:17:47 +00:00
Ryan Macnak 867dfd226e [vm, compiler] Update the RISC-V shadow call stack pointer from S2 to GP.
Cf. https://reviews.llvm.org/D146463

TEST=ci (Linux), inspect disassembly (Fuchsia/Android)
Change-Id: I3ef4bc4c3212e80221ec7edaebfa33e9eb1db03d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291660
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
2023-04-13 19:29:47 +00:00
Ryan Macnak 2bfecc160b [vm] Update to constexpr in runtime/vm.
TEST=build
Change-Id: I2dd8ae69764af27f480a19995b491e98f52476ae
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/293902
Reviewed-by: Liam Appelbe <liama@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2023-04-12 22:18:54 +00:00
Ben Konyi 33e54edb53 [ VM ] Add force_gc parameter to Dart_ReportSurvivingAllocations
Also in this change:
 - Add heap_size to Dart_HeapSamplingCreateCallback
 - Remove heap_size from Dart_HeapSamplingReportCallback

TEST=Existing dart_api_impl_tests updated

Change-Id: Iaa8d340de94d95f93c94f4a3d29d6d889dad49de
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/294800
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2023-04-12 17:28:13 +00:00
William Hesse 7bac8ed687 [Release] Bump minor version of main to version 3.1.
Change-Id: Icf489686d790be195e37db37727782227d2f3704
TEST=Version bump autogenerated by scripts
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/294600
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: William Hesse <whesse@google.com>
2023-04-12 16:36:20 +00:00
Ryan Macnak fde31b1c63 [vm, compiler] Fix MemoryCopyInstr for RV32.
TEST=IRTest_MemoryCopy_0_0_8_8
Change-Id: I35ea73ec6424480f099800440cc08ffd12327bf5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/294621
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2023-04-12 16:13:46 +00:00
Lasse R.H. Nielsen 80de9162c8 Retire 2.19 experiment.
Tested: No tests. Removing functionality, all existing tests running is a success.
Change-Id: I25eb84347e1d133d465671223f4d3b037116c5e7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/294241
Reviewed-by: Liam Appelbe <liama@google.com>
Auto-Submit: Lasse Nielsen <lrn@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Kevin Chisholm <kevinjchisholm@google.com>
Reviewed-by: Kevin Moore <kevmoo@google.com>
Commit-Queue: Lasse Nielsen <lrn@google.com>
2023-04-12 12:46:41 +00:00
Ryan Macnak ba2b255200 [vm] Fix compilation warnings-as-errors with gcc 12.
TEST=local build
Change-Id: Iaeeef4ff9ca90c020f296026b22a935a9ca39431
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/294660
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2023-04-12 01:39:08 +00:00
Ryan Macnak 5941defa81 [vm] Update to constexpr in runtime/vm/compiler.
TEST=build
Change-Id: Idf0a05cf8c27164834b5d8464b230cd334a06835
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/293082
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2023-04-11 21:50:56 +00:00
Ryan Macnak 96fd0b2208 [vm, gc] Avoid duplicate pointer visiting functions when compressed pointers are disabled.
This reduces code size ~10k, but more importantly it is easier to read profiling results without duplicate entries.

TEST=ci
Change-Id: I14c4a0d78d856242c5493df6de629ce048753c38
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/294440
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Liam Appelbe <liama@google.com>
2023-04-11 17:36:33 +00:00
Ryan Macnak 76907d72aa [vm] Update to constexpr in runtime/vm/heap.
TEST=build
Change-Id: I9edebf58e01ff46575d1fba5650acafd3225abb2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/293120
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2023-04-11 01:28:35 +00:00
Alexander Aprelev 617925e0c5 [vm/win] Move ntdll.lib dep from runtime/bin to runtime/vm
BUG=https://github.com/flutter/flutter/issues/124532
TEST=ci

Change-Id: I60c8f88878652e37603bff651190c08f8dfaeab0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/294424
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2023-04-10 22:22:57 +00:00
Ryan Macnak 1eae028526 [vm] Fix zero-as-null-pointer-constant warnings in the VM.
Unfortunately we cannot enable -Wzero-as-null-pointer-constant because of zlib and icu headers we include.

TEST=build
Change-Id: I9ffd7d7e26f2b3dd616ce54d164b92e60a2366dc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/293882
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2023-04-10 21:38:57 +00:00
Ryan Macnak f9a6a5bdd2 [vm] Update NULL to nullptr in runtime/vm.
TEST=build
Change-Id: I2834ef7cf7cb7c8770f8167a2438cbedcee5c623
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/292063
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2023-04-10 18:15:12 +00:00
Alexander Aprelev 8c219a0d34 [gardening] Clean up msvc-flagged redundant casts.
TEST=msvc ci
BUG=https://github.com/dart-lang/sdk/issues/52002

Change-Id: I9a2865e6e55c1924e40aa0c946bfe1c3ce969d69
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/294363
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2023-04-10 16:50:22 +00:00
Alexander Aprelev 386a87a890 [vm/win] Better exception handling on Windows x64.
This change adds x64 unwinding information for generated code allowing Windows to actually call registered unhandled exception filters(Crashpad or dart-builtin crash handler).

BUG=https://github.com/dart-lang/sdk/issues/51726
TEST=ffi\ffi_induce_a_crash_test.dart

Change-Id: I1d9dd208f2c030b51a1146afa1048d419847fef7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/294129
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2023-04-07 21:22:35 +00:00
Alexander Markov b6b8b00daa [vm/compiler] Fix compiler crash when unboxed record is used in a try block
TryCatchOptimizer pass reasonably expects for all MayThrow instructions
to have environment. AllocateSmallRecord instruction which is inserted
when boxing an unboxed record result of a call didn't have environment,
which caused crash in TryCatchOptimizer.

The fix is to copy the environment from a call instruction when
inserting AllocateSmallRecord.

TEST=runtime/tests/vm/dart/records_return_value_unboxing_il_test.dart
Fixes https://github.com/dart-lang/sdk/issues/51972
Cq-Include-Trybots: luci.dart.try:vm-aot-linux-release-x64-try
Change-Id: I5b7a097329ee10638eeba2ab0d4eb2f272afebc5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/293966
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2023-04-06 20:20:02 +00:00
Alexander Markov 9c3e294dd2 [vm/compiler] Improve logic for combining types when both types have the same cid
Previously, a type with known cid was immediately selected, even
if another type also has a known cid. Now, if cids match, the static
types are also compared. This is useful for record types, because
static record type is more accurate than known kRecordCid.

TEST=vm/dart/records_field_operations_il_test

Issue: https://github.com/dart-lang/sdk/issues/51637
Cq-Include-Trybots: luci.dart.try:vm-aot-linux-release-x64-try,vm-aot-linux-debug-x64-try
Change-Id: I4e528d80a355a79d428bf3f03212c5a65af0b661
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/292983
Auto-Submit: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2023-04-04 06:36:20 +00:00
Ryan Macnak 70bbee75de [vm] Don't forget an isolate is shutting down when processing a resume command.
Cf. 4443d2d561

TEST=ci
Bug: b/271314180
Change-Id: I28553ef064ee603c076b69f5b887028bb81967ca
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/292460
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2023-04-03 20:52:36 +00:00
Ryan Macnak f8076ad47d [vm, compiler] Implement PcRelativeTrampolineJumpPattern for RISC-V.
This is used only for the architecture-independent CodeRelocator_OutOfRange tests, never in real programs.

TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/48333
Change-Id: Ia79a86a867117a3889caac11f88ded1abadb5329
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/292204
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2023-04-03 18:27:04 +00:00
Alexander Markov 71b0bb3473 [vm] Allow breakpoints on record assignments
TEST=pkg/vm_service/test/breakpoint_on_record_assignment_test.dart
Fixes https://github.com/dart-lang/sdk/issues/51909

Change-Id: I9a57b0f8374056af5928ab2e4b8bf02fc6d1e171
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/292802
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
2023-04-03 17:55:30 +00:00
Martin Kustermann e1c2192110 [vm] Make writeHeapSnapshotToFile() API public in dart:developer
This API can be used by app developers that want to diagnose high
memory consumption by dumping state of Dart VM heap at specific
points in their apps code and later analyzing those dumps offline
(e.g. using the tool in `<sdk>/runtime/tools/heapsnapshot`).

TEST=Existing test suite.

Change-Id: I04de6ba564f7b9eaf8b59d41fc4b3ec35ce8d2e5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279972
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Michael Thomsen <mit@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Lasse Nielsen <lrn@google.com>
Reviewed-by: Jacob Richman <jacobr@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2023-04-03 12:25:55 +00:00
Martin Kustermann 6e252d9793 [vm] Allow sending objects across isolates that implement (but not extend) [NativeFieldWrapperClass]
There are currently users that implement classes (e.g. for mocking
purposes) that implement/extend NativeFieldWrappers and send such
objects across isolates.

This CL ensures such mocks can be sent across isolates again (which was
disabled in breaking change in [0]) as long as mocks do not extend NFW
(and therefore have actual native fields).

In the future the [NativeFieldWrapperClass]s will be marked as `base`
and therefore prevent implementing them, see issue [1].
=> At this point this CL can be reverted again.

[0] https://dart-review.googlesource.com/c/sdk/+/289027
[1] https://github.com/dart-lang/sdk/issues/51896

TEST=adjusted isolate tests

Change-Id: I5fe1110e7046761e3606927063d3ad5e2b4bf4e0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/292320
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2023-04-03 07:49:25 +00:00
Daco Harkes 3de5d25429 [vm] Class modifiers for NativeFieldWrapper subtypes
Split off https://dart-review.googlesource.com/c/sdk/+/291761.
Landing separately, so that the breaking change itself is a smaller
CL.

TEST=ci build (see touched _test files)

bug: https://github.com/dart-lang/sdk/issues/51896
Change-Id: Ic8d218845ccb6a277689e911b2c34c44639e13cf
Cq-Include-Trybots: luci.dart.try:flutter-linux-try,vm-aot-linux-debug-x64c-try,vm-ffi-android-debug-arm-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/292000
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2023-03-31 13:20:19 +00:00
Ryan Macnak 25548a912f [vm, reload] NoSuchMethodError after a static target goes missing or changes signature.
- Mostly restores the pre-kernel behavior, except that actual arguments are not passed to the NoSuchMethodError.
 - Instead of a vague error message, the call site whose target is missing is now part of the stack trace and the name/kind of the missing target is part of the exception message.
 - If the missing target is on a branch not taken, things properly succeed.

TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/37517
Bug: https://github.com/flutter/flutter/issues/122626
Change-Id: Ic3d5a386caa8d1627d8452a5601bc728ad519987
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291055
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2023-03-30 19:27:17 +00:00
Alexander Markov 103a098d64 [vm,debugger] Do not stop at hoisted variable declarations when stepping through patterns
TEST=pkg/vm_service/test/step_through_patterns_test.dart
Issue: https://github.com/dart-lang/sdk/issues/51812
Issue: https://github.com/dart-lang/sdk/issues/49755

Change-Id: Ieb2e6f49c613c7543e7e76119cefbc4d8f9ae3de
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291840
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
2023-03-30 18:42:48 +00:00
Ryan Macnak de2abc6091 [vm] Update NULL to nullptr in runtime/vm/compiler.
TEST=build
Change-Id: I54cd75bbc942e11c4d719edcc64640da67077634
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291965
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2023-03-30 18:23:53 +00:00
Ryan Macnak c566435a71 [vm] Update NULL to nullptr in runtime/vm/heap.
TEST=build
Change-Id: Iaa7cb94de855922aef3ce0e005546499386e01f5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291964
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2023-03-30 17:15:58 +00:00
Johnni Winther 7914382b50 [cfe] Remove length check from map pattern matching
In response to https://github.com/dart-lang/language/pull/2960

TEST=existing expectation tests

Change-Id: I5c0d9070b98074c167dea0a0b9a0d576d4aa33d3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291825
Reviewed-by: Slava Egorov <vegorov@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
2023-03-30 11:26:08 +00:00
Johnni Winther 2528bf8666 [kernel] Add VariableDeclaration.isHoisted
This flag is set when a variable declaration is moved earlier in
order to be available for subsequent code that couldn't contain
its declaration. For instance variables declared in patterns which
needs to be declared before the matching expressions that initialize
them.

TEST=existing expectations tests

Change-Id: I80ab1138f08f725f3e01905c1a57a1483f809328
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291820
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
2023-03-30 07:13:40 +00:00
Martin Kustermann 042c3f6c76 [vm] Cleanup unused metric accessors in VM
Only a few of the metrics are accessed via Dart C API, so we can remove
the rest from the C API surface.

The VM metrics seem to be unused entirely.

TEST=ci

Change-Id: I03be78ed2f223aa6fba80f663fb12c8ef9a66cb7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291762
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
2023-03-29 19:58:33 +00:00
Vyacheslav Egorov d449a33285 [vm] Restore FrameLayout name
It was accidentally renamed to UntaggedFrame when we
were refactoring tagged pointers representation and
renaming Raw* classes.

TEST=just a rename

Change-Id: I399a9cdfd415ff8da9597c9a6fcd753f55d558d1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291764
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2023-03-29 18:11:49 +00:00
Danny Tuppeny 11129423b9 [dds/dap] Don't call setLibraryDebuggable unnecessarily
Fixes https://github.com/Dart-Code/Dart-Code/issues/4464.

TEST=DAP tests included, VM changes are only a comment
Change-Id: I5ee44fda5b954d371bd00345815c24515eb14f61
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291282
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2023-03-29 15:54:02 +00:00
Daco Harkes ed09412b96 [vm] Remove implements_finalizable bit
The new is_isolate_unsendable bit [0] covers the full use case of the
implements_finalizable bit.

[0] https://dart-review.googlesource.com/c/sdk/+/289027

TEST=runtime/vm/object_test.cc
TEST=tests/ffi/vmspecific_native_finalizer_isolates_test.dart

Change-Id: Ic8a1460fcb59598a182a006cdf5acd72cbafb739
Cq-Include-Trybots: luci.dart.try:vm-aot-linux-debug-x64c-try,vm-appjit-linux-debug-x64-try,vm-ffi-android-debug-arm-try,vm-kernel-linux-debug-x64-try,vm-kernel-gcc-linux-try,vm-reload-linux-debug-x64-try,vm-reload-rollback-linux-debug-x64-try,vm-win-debug-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291760
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
Auto-Submit: Daco Harkes <dacoharkes@google.com>
2023-03-29 15:22:00 +00:00
Martin Kustermann 02947b5aff [vm] Remove Dart_SetGCEventCallback() API
The only user of this API is no longer using it (see cl/519087228).

It's possible we'd re-introduce such an API in the future,
in which case we may want to:

 - make it more clear what the GC times mean (are concurrent threads for
   mark/sweep or parallel threads for paralell marking included,
   is time in wallclock or cpu time, ...)

 - include information more useful for users, such as maximum
   synchronous pause times

TEST=ci

Change-Id: Idec6f1fdc406956889dd858f280dfe84bed0d10f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291260
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
2023-03-29 08:06:08 +00:00
Martin Kustermann 51f49fd501 [vm] Eagerly allocate (<native-name>, <tear-off>) function data for natives.
After [0] landed, it's possible to eagerly allocate the native function
data object, which simplifies some code.

[0] https://dart-review.googlesource.com/c/sdk/+/290502

TEST=ci

Change-Id: I9b98fed960b7ec26e3b47c93713f2594446a66d3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291501
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2023-03-29 06:49:49 +00:00
Alexander Markov 8d6a15edf9 [vm] Make sure builtin types have consistent names across different build modes
TEST=runtime/tests/vm/dart/builtin_type_names_test.dart

Change-Id: If28ad837ede693cb681a54b7e06a3b5ce7e2d462
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291584
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2023-03-28 21:15:58 +00:00
Alexander Aprelev 67683c3973 [vm/isolates] Introduce 'vm:isolate-unsendable' pragma.
Decorate Zone, Future, Completer, Timer and Stream with newly-introduced pragma to make sure that message verification stops earlier, produces shorter retaining path for the user.

BUG=https://github.com/dart-lang/sdk/issues/51722
TEST=send_unsupported_objects_test,isolate_exit_unsendable_test.dart
CoreLibraryReviewExempt: vm-specific pragmas
Change-Id: I499eea542d228ac9cf0797a682664f93f360dc80
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289027
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2023-03-27 20:54:11 +00:00
Alexander Markov 5117c45770 [vm/compiler] Combine argument type with static and inferred parameter types during inlining
Previously, when preparing a Parameter stub during inlining, compiler
unconditionally used argument type (from the caller). This type
could be less accurate than static or inferred parameter type of
the callee. For example, the argument could originate from inlined generic ListIterator.current:

  v24 <- LoadField(v23 . _current@9040228) T{X0??}

and static type could be 'int'.

This change combines argument type from callee with a parameter type
from caller during inlining. In order to get parameter type for
optional parameters, ParameterInstr is extended to hold real parameter
index and ParameterIndex::ComputeType is extended to work on
parameters which are not passed directly.

Also, this change fixes the incorrect non-nullable receiver type for
Object and Null methods.

TEST=runtime/tests/vm/dart/regress_51790_il_test.dart
Fixes https://github.com/dart-lang/sdk/issues/51790

Change-Id: I19fff19833a6148ed36a16895626e4e1d8ae62d3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/290602
Reviewed-by: Slava Egorov <vegorov@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2023-03-26 03:42:30 +00:00
Alexander Aprelev 9daa67967f [vm/reload] Ensure we only morph instantiated classes and enums.
Fixes https://github.com/dart-lang/sdk/issues/51835
TEST=IsolateReload_EnumInMainLibraryModified

Change-Id: I4a8993cb44619a552866430b92f3941d49afbae6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291051
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2023-03-25 01:33:07 +00:00
Ben Konyi c927840920 [ VM ] Add support for samping heap profiler in PRODUCT mode
Requires INCLUDE_SAMPLING_HEAP_PROFILER to be defined.

TEST=DartAPI_HeapSampling_*

Change-Id: I1c95be4747b295823a8fae1f369f9dc5d95a274e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/290620
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2023-03-24 14:02:14 +00:00
Ben Konyi 689042093d [ VM ] Re-work heap sampling profiler APIs to make use of WeakTable
TEST=updated dart_api_impl_test tests

Change-Id: Ibb6789286a88c96151a466617054d703cceed61e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/290160
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2023-03-24 14:00:09 +00:00
Ryan Macnak fc65f506a8 [vm, compiler] Always reserve x18 on RISC-V.
The extracted runtime offsets can handle architecture differences but not OS differences. Compare handling of x18 on ARM64.

TEST=gen_snapshot_fuchsia
Change-Id: Ide7557fa9f0cb5ed3d65f05a68310b88883957fb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/290704
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2023-03-23 23:17:50 +00:00
Ben Konyi 15de818977 [ Service ] Add new InstanceKind "UserTag"
Also adds a new "label" property to @Instance

TEST=pkg/vm_service/test/get_object_rpc_test.dart

Change-Id: I746d56909a55e0158896e1034665147c469109bb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/290920
Reviewed-by: Derek Xu <derekx@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2023-03-23 17:51:03 +00:00
Liam Appelbe 929fec660b Reland "[vm] Refactor StubCodeCompiler to be a real class."
This is a reland of commit afdf640866

Original change's description:
> [vm] Refactor StubCodeCompiler to be a real class.
>
> Previously, StubCodeCompiler was just a set of static methods, all of
> which take an assembler as their first arg. This makes it hard to pass
> additional state to the ~160 stub macro defined stub generators.
>
> This refactor makes StubCodeCompiler a real class, with assembler as a
> field. So we can easily add new fields to the class later, to pass new
> state without having to update every stub generator.
>
> assembler is declared as a public field for a few reasons:
> - There's one place where it needs to be accessed by a non-member
>   function (in the ia32 file).
> - If it's private, it has to be named assembler_, which would mean a lot
>   more insignificant diffs.
> - Non-member functions that take assembler would have to take assembler_,
>   for consistency with the __ macro, which would be weird.
>
> Change-Id: I142f0803a07c7839753188065c69c334d4d1798a
> TEST=CI
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289924
> Reviewed-by: Ryan Macnak <rmacnak@google.com>
> Commit-Queue: Liam Appelbe <liama@google.com>

Change-Id: Ib5be28c46a0a80b84e31aea60893ab5bbc02e2ea
TEST=CI, including all sanitizers and architectures
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/290681
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Liam Appelbe <liama@google.com>
2023-03-22 23:48:56 +00:00