Commit Graph

20173 Commits

Author SHA1 Message Date
Josh Soref 9f6bcadb22 Spelling runtime observatory
Closes https://github.com/dart-lang/sdk/pull/50810

GitOrigin-RevId: 5edc2fb9b7b693190bc34fe1941591bdaf3405fe
Change-Id: Ia6627bc075fc5d4ab9dfaeec91da164820cdefee
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/276880
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Thomas <athom@google.com>
2023-01-20 14:29:08 +00:00
Alexander Thomas b9b6511ca6 Spelling sdk
Closes https://github.com/dart-lang/sdk/pull/50918

Co-authored-by: Josh Soref <jsoref@gmail.com>
GitOrigin-RevId: 1fd275051c561b63d374fb47e76a22424c4a12a9
Change-Id: I97790d9c79ff659f2c1fa2d2d46d041fe67957cb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278530
Reviewed-by: William Hesse <whesse@google.com>
Commit-Queue: Alexander Thomas <athom@google.com>
Reviewed-by: Tess Strickland <sstrickl@google.com>
2023-01-20 12:37:49 +00:00
Tess Strickland dce6d89062 [gardening] Mark vm/cc/ManyClasses as Slow on qemu bots.
Change-Id: I7184e7a28fbbe956bcb898bc4e50f7f61784e7f3
Cq-Include-Trybots: luci.dart.try:vm-precomp-ffi-qemu-linux-release-riscv64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/276480
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Reviewed-by: William Hesse <whesse@google.com>
2023-01-20 11:34:31 +00:00
Daco Harkes 6ef57b86c1 [vm/ffi] Support varargs
This CL introduces `VarArgs` to `NativeFunction` signatures. The
`VarArgs` type takes a single type argument. This type argument is a
subtype of `NativeType` if there is a single variadic argument, and a
record with native types if there are multiple variadic arguments.
For example:
`NativeFunction<Void Function(Pointer<Char>, VarArgs<(Int32,Int32)>)>`
for calling refering to a `printf` binding with two `int32_t` arguments
passed as variadic arguments.

The logic of the native calling conventions are detailed in
https://dart-review.googlesource.com/c/sdk/+/278342.
Here we explain how this influences the FFI pipeline.

First, now that `VarArgs` is part of signatures, we have to unwrap
that when with the C types in the CFE transform and checking (analyzer
is in a separate CL), and also in the marshaller when looking up the
C type of arguments.

Second, we have to deal with `BothNativeLocations`. On windows x64,
floating point arguments must be passed both in FPU _and_ CPU
registers. For FFI calls, we solve this in the argument moves by just
copying to both locations. For FFI callbacks, we just take the FPU
register location (which avoids an extra bitcast).

Third, on System-V, we have to pass an upper bound of the number of
XMM registers used in AL. This means we instead RAX, we use R13 for the
target address. For variadic calls, we always pass 8 in AL as the valid
upper bound. We could consider passing the actual number of XMM
registers used.
We keep using RAX as default register for the function address on non-
variadic calls, because changing to R13 (the first free) register
creates more spilling in leaf calls. R13 is callee-saved while RAX is
not, so using R13 instead of RAX causes us to have to spill the value
from RAX on leaf calls.

Fourth, on both x64 and RISC-V, we pass floats in integer locations.
`EmitNativeMove` has been modified to deal with this, so that we do not
have to insert more `BitCastInstr`s.

The tests are generated by a test generator: `tests/ffi/generator/`.

The formatter doesn't support records yet, so the tests are not properly
formatted.
Bug: https://github.com/dart-lang/sdk/issues/50798

TEST=tests/ffi/*_varargs_*

Closes: https://github.com/dart-lang/sdk/issues/38578
Closes: https://github.com/dart-lang/sdk/issues/49460
Closes: https://github.com/dart-lang/sdk/issues/50858

Change-Id: I6a6296fe972527f8a54ac75a630131769e3cc540
Cq-Include-Trybots: luci.dart.try:vm-kernel-reload-rollback-linux-debug-x64-try,vm-kernel-reload-linux-debug-x64-try,vm-kernel-linux-debug-ia32-try,vm-kernel-nnbd-linux-debug-ia32-try,vm-kernel-win-debug-ia32-try,vm-kernel-linux-debug-x64-try,vm-kernel-mac-debug-x64-try,vm-kernel-win-debug-x64-try,vm-kernel-nnbd-win-release-ia32-try,vm-kernel-nnbd-win-debug-x64-try,vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64c-try,vm-kernel-precomp-android-release-arm64c-try,vm-kernel-precomp-android-release-arm_x64-try,vm-precomp-ffi-qemu-linux-release-arm-try,vm-precomp-ffi-qemu-linux-release-riscv64-try,vm-kernel-asan-linux-release-x64-try,vm-kernel-precomp-asan-linux-release-x64-try,vm-kernel-msan-linux-release-x64-try,vm-kernel-precomp-msan-linux-release-x64-try,app-kernel-linux-debug-x64-try,vm-kernel-mac-release-arm64-try,vm-kernel-nnbd-mac-debug-arm64-try,vm-kernel-nnbd-mac-debug-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/276921
Reviewed-by: Devon Carew <devoncarew@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2023-01-20 10:30:41 +00:00
Daco Harkes 1854bb00c6 [vm/ffi] Support varargs in the backend
On ARM64 macos and ios, when varargs are used, the first vararg blocks
all cpu and fpu registers.

On Windows x64, when varargs are used, floating point arguments are
passed _both_ in the integer and double register.

The Windows logic requires a new kind of native location:
`BothNativeLocations`, which signals that a value needs to be copied
to both locations before an FFI call, and can be copied from any of
the two locations when getting an FFI callback.
TEST=runtime/vm/compiler/ffi/unit_tests/variadic_double/x64_win.expect

Note that integer arguments already block out the corresponding xmm
registers on Windows x64.

On System-V, an upper bound of the number of XMM registers used must
be passed in AL. (Not reflected in the unit tests here, but will be in
the dependent CL.)

On ARM (32 bit), using varargs forces the calling convention to be in
softfp mode even on hardfp supported devices.

On RISC-V, the FPU registers are blocked when using varargs.

TEST=runtime/vm/compiler/ffi/native_calling_convention_test.cc
Test outputs in: runtime/vm/compiler/ffi/unit_tests/variadic_*
Run test with `tools/test.py ffi_unit`.

Bug: https://github.com/dart-lang/sdk/issues/38578
Change-Id: Ic568f8156c1c28ac3d6a2144805edf8caaa0169c
Cq-Include-Trybots: luci.dart.try:vm-precomp-ffi-qemu-linux-release-arm-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278342
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2023-01-20 10:30:41 +00:00
Kallen Tu 1cdd496a51 [cfe] Add class modifiers to AST and dill files.
TEST=pkg/front_end/testcases/class_modifiers/...

Change-Id: I8befd64c359eb33a6acf003525b0c8cc6096df3d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279331
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Kallen Tu <kallentu@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2023-01-19 22:55:20 +00:00
Alexander Markov acccac2b64 [vm/compiler] Improve canonicalization of box/unbox instructions
Unnecessary boxing/unboxing instruction can be eliminated if
their operand already has a desired representation.

This change also schedules Canonicalize pass before
TypePropagation/SelectRepresentations_Final so it has a final chance
to cleanup IL after preceeding passes but before the representations are frozen
and certain canonicalizations are disallowed.

TEST=vm/cc/IL_Canonicalize_RepresentationChange
Related issue: https://github.com/dart-lang/sdk/issues/51019

Change-Id: I187767e3efa69497cdd1f44dd916a8b9fb9f7261
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279274
Reviewed-by: Slava Egorov <vegorov@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2023-01-19 21:24:14 +00:00
Ryan Macnak 391ce71a0f [vm] Use a weak set to represent dependent code.
Fixes a scaling limitation where compiling N functions using the same guarded field or CHA guarded interface will result in O(N^2) comparisons when registering the dependencies.

TEST=ci
Change-Id: Ic48f29fa0ce8f43a6f60bc00fa95a60763d333a0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278943
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2023-01-19 20:44:57 +00:00
Ryan Macnak e210ee3577 [vm] Internal-only String.intern.
TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/50648
Change-Id: I02e89c0def9913f12bf7fdd2ef8f3ff6cba231e3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278808
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2023-01-19 17:49:08 +00:00
Ryan Macnak f9524f8509 [observatory] Fix some damage from NNBD and changes to InboundReference/RetainingPath.
TEST=view allocation profile, inbound references, retaining path
Change-Id: Id72fff5eaa1f892e9d54703f2f29787067c54055
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279202
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Derek Xu <derekx@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
2023-01-19 17:36:20 +00:00
Vyacheslav Egorov b2dff24bd7 [gn] Remove dart_sysroot check from runtime/BUILD.gn
We should not use dart_sysroot outside of our own
build/config/sysroot.gni, Flutter buildroot does not
define this variable.

We don't actually need -Wall -Werror -Wextra in dart_config
because default config already contains chromium_code config
which does this.

Change-Id: Id7843809dcecc8871af1df6b8d3899511545cd51
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279355
Commit-Queue: Slava Egorov <vegorov@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
2023-01-19 16:47:22 +00:00
Josh Soref 84e3c8b50f Spelling tests
Closes https://github.com/dart-lang/sdk/pull/50920

GitOrigin-RevId: fa87531bd0f52b69485c9d02ff9e44a4a29c6a91
Change-Id: I0ae8574a5b77087895e004079f221201bb550cf3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278535
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Alexander Thomas <athom@google.com>
2023-01-19 16:24:29 +00:00
Martin Kustermann 8d8782f659 Make runtime/tools/heapsnapshot/README.md more elaborate
Change-Id: I8ee4952d3889b8eec10495f900d26be1e3f7c34e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279354
Reviewed-by: Slava Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2023-01-19 13:12:02 +00:00
なつき afe9219026 [infra] Support for Alpine Linux Sysroot
Closes https://github.com/dart-lang/sdk/pull/51044

TEST=manually tested by the contributor

GitOrigin-RevId: 86c85da0680047e08caf81cc4c12098ae85c0d2b
Change-Id: I591d7e17ce3a87cf8ce8380c9511f70d738d44c2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279267
Reviewed-by: Slava Egorov <vegorov@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Slava Egorov <vegorov@google.com>
2023-01-19 10:36:51 +00:00
Josh Soref 9e4dc755cb Spelling pkg
Closes https://github.com/dart-lang/sdk/pull/50921

GitOrigin-RevId: 6b1ca502b6722b0a987f33ace66f65cbd2c24e23
Change-Id: I74e4ff3c8e759c576036d6b791bd7734ebd215d8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278536
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Alexander Thomas <athom@google.com>
2023-01-19 10:06:29 +00:00
Daco Harkes 3868b30e21 [vm] Fix RISC-V build
TEST=risc-v sdk bot

Change-Id: I57df7b0ff267931b6dd5fe00260d80a42d1789b6
Cq-Include-Trybots: luci.dart.try:dart-sdk-linux-riscv64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279179
Auto-Submit: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2023-01-19 00:00:08 +00:00
Ryan Macnak 79bcad6453 [vm, compiler] Use a proper sentinel instead of a string to represent eliminated values.
- Prevents the VM from behaving incorrectly when the Dart program happens to use the string "<optimized out>".
 - Prevents the VM from executing eval functions for non-String classes with a String receiver.

TEST=<optimized out>
Bug: https://github.com/dart-lang/sdk/issues/51027
Change-Id: I4b6ee856492dee86d641a0200a40a25fa78bcb88
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279261
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2023-01-18 23:34:12 +00:00
Daco Harkes 9a8508ebff [vm/ffi] FfiNative assets
Adds support for `asset: 'asset-id'` in `FfiNative`s.
Symbols in assets are resolved by
1. the provided [asset] (the bulk of this CL),
2. the native resolver set with `Dart_SetFfiNativeResolver` in
   `dart_api.h` (old behavior), and
3. the current process.

Symbols in assets are resolved by the Dart VM through the mapping
provided in the `vm:ffi:native_assets` library:
```
@pragma('vm:ffi:native-assets', {
  "linux_x64": {
    "<asset1>": [
      "absolute",
      "<absolute-path>"
    ],
    "<asset2>": [
      "relative",
      "<relative-path>"
    ],
    "<asset3>": [
      "system",
      "<system-path>"
    ],
    "<asset4>": [
      "process",
    ],
    "<asset5>": [
      "executable",
    ],
  }
})
library;
```

There are 5 asset path types. Symbols resolved in these asset types are
resolved as follows.
A. Absolute paths are dlopened, after which the symbol is looked up.
B. Relative paths are resolved relative to `Platform.script.uri`, and
   dlopened, after which the symbol is looked up.
C. System paths are treated as absolute paths. (But we might explicitly
   try to use `PATH` in the future.)
D. Symbols looked up in Process assets are looked up in the current
   process.
E. Symbols looked up in Executable assets are looked up in the current
   executable.

The native assets mapping can be provided in three ways.

X. In the invocation to `gen_kernel` with the `--native-assets`
   argument. This uses the gen_kernel entry point for compiling
   kernel.
Y. By placing a `native_assets.yaml` next to the
   `package_config.json` used by the isolate group. This works for
   `dart <source file>` and `Isolate.spawnUri(<dart source file>)`.
   This uses the kernel_service entry point for compiling kernel.
Z. By sending a String containing the native assets mapping when
   invoking the kernel_service directly from within the VM. Currently,
   only used for unit tests.

TEST=tests/ffi/native_assets/asset_*_test.dart (X)
TEST=tests/ffi/native_assets/infer_native_assets_yaml_*.dart (Y)
TEST=runtime/vm/ffi/native_assets_test.cc (Z)

The library is synthesized from yaml in pkg:vm as AST.

Design doc: go/dart-native-assets

Bug: https://github.com/dart-lang/sdk/issues/49803
Change-Id: I8bf7000bfcc03b362948efd3baf168838948e6b9
Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64c-try,vm-precomp-ffi-qemu-linux-release-arm-try,vm-kernel-nnbd-mac-debug-arm64-try,vm-kernel-nnbd-mac-debug-x64-try,vm-kernel-win-debug-x64-try,vm-kernel-win-debug-ia32-try,vm-kernel-precomp-win-debug-x64c-try,vm-kernel-reload-linux-debug-x64-try,vm-kernel-reload-rollback-linux-debug-x64-try,vm-kernel-precomp-nnbd-linux-debug-x64-try,vm-kernel-precomp-win-debug-x64c-try,vm-kernel-precomp-nnbd-mac-release-arm64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/264842
Reviewed-by: Martin Kustermann <kustermann@google.com>
2023-01-18 21:08:38 +00:00
Daco Harkes 476e13a5e9 [vm] Enable annotations on libraries in AOT
We have no use cases for this until the dependent CL.
TEST=dependent CL

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

Change-Id: Iee91f90ddd474cef3b7218def4d3e716ab2639ab
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/272421
Reviewed-by: Martin Kustermann <kustermann@google.com>
2023-01-18 21:08:38 +00:00
Ryan Macnak 49a135ab7e [vm] Extend the hash_table.h templates to support weak sets.
Make the canonical string table weak.

Remove incorrect assumption that a symbol not already existing implies there is no target. This would be true but for all the call-through-field/method-extractor nonsense.

TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/50648
Bug: b/265897936
Change-Id: I463807a5d8c064888abbdc3dc75e916c2bdc8fa5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279273
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2023-01-18 20:16:11 +00:00
Ryan Macnak d23d074bb9 [vm] Fix determining the scope class for evaluation with mixin applications.
TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/51027
Change-Id: I02b31187c2dd81ff61db01d5922a2b283e7f2541
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279238
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
2023-01-18 17:48:31 +00:00
Martin Kustermann 3e05b6849e [gardening] Remove unused field
TEST=Fixes build due to unused-private-field warning.

Change-Id: Ieff80e1a376ff225dda3ed78a5e22fff923341d8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279174
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
2023-01-18 17:38:29 +00:00
Tess Strickland c8ca74d380 [vm] Fix broken failure code in Dwarf::WriteLineNumberProgram.
TEST=riscv64 build combined with CL 279174

Bug: https://github.com/dart-lang/sdk/issues/51051
Change-Id: I016f3a67510ea2a1fa8067aa61fa485ecb5cf172
Cq-Include-Trybots: luci.dart.try:vm-precomp-ffi-qemu-linux-release-riscv64-try,vm-kernel-precomp-asan-linux-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279177
Commit-Queue: Tess Strickland <sstrickl@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
2023-01-18 17:21:13 +00:00
Sam Rawlins 59561320dc [dartfuzz] Remove duplicate map keys
In dartfuzz_api_table.dart, both `DartType.VOID` and `DartType.VOID_NULLABLE` are added to the Map keys. At runtime, the last value for a given key wins, so I removed the `DartType.VOID` key-value pair.

In gen_api_table.dart, both `assertionErrorEncoding` and `errorEncoding` are added to the Map keys. At runtime, the last value for a given key wins, so I removed the `assertionErrorEncoding` key-value pair.

This CL should be a no-op.

Bug: https://github.com/dart-lang/sdk/issues/50796
Change-Id: Ifcfeb3e84930267f60efd2eb009a722f8ac2453e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279234
Reviewed-by: Tess Strickland <sstrickl@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2023-01-18 15:57:00 +00:00
Alexander Markov 3fc896f7b2 [vm/compiler] Avoid introducing mismatched representations during instruction canonicalization
After 'SelectRepresentations_Final' mismatched representations
are not allowed. So 'Canonicalize' pass should not replace
an instruction with another instruction when they have
different representations.

TEST=vm/cc/IL_Canonicalize_RepresentationChange
Fixes https://github.com/dart-lang/sdk/issues/51019

Change-Id: I087e16cda6e196337e7636746172d9e28ae07374
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279230
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
2023-01-18 15:23:07 +00:00
Emmanuel Pellereau 3b97b75a99 Revert "[vm] Extend the hash_table.h templates to support weak sets."
This reverts commit a1dd92d345.

Reason for revert: breaks google (b/265897936)

Original change's description:
> [vm] Extend the hash_table.h templates to support weak sets.
>
> Make the canonical string table weak.
>
> TEST=ci
> Bug: https://github.com/dart-lang/sdk/issues/50648
> Change-Id: I04d84a917bd71469d43483cefba8165628b9a63f
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278673
> Reviewed-by: Siva Annamalai <asiva@google.com>
> Commit-Queue: Ryan Macnak <rmacnak@google.com>

TBR=rmacnak@google.com,asiva@google.com,dart-scoped@luci-project-accounts.iam.gserviceaccount.com

Change-Id: I5f5f1dc3327d02165c3cec70b74a61ce9ef9667b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: https://github.com/dart-lang/sdk/issues/50648
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279280
Reviewed-by: Emmanuel Pellereau <emmanuelp@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Emmanuel Pellereau <emmanuelp@google.com>
2023-01-18 10:02:06 +00:00
Martin Kustermann 163f30f1b5 [vm] Ensure unoptimized compilations do not have an active isolate
Our compiler shouldn't depend on current isolate, since it can
run on any isolate within an IG.

Doing this change, reveals two existing dependencies on current
isolate from compiler
- resolving native symbols in unoptimized compilations
- issuing of debug events for breakpoints

For the former we'll re-enter the currently active isolate that
triggered unoptimized compilation.
=> We may want to change that embedder API to not be based on
   handles and instead give embedder a simple `const char*`.

For the ladder we'll enter the isolate corresponding to the
breakpoint debug event to be issued. We are at place where
all mutators are stopped, so that does seem okish.
=> Future could remove this by making Object Id Ring per-IG

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

TEST=service_2/break_on_function_many_child_isolates_test/dds

Change-Id: Id246db5972ae505e82f637ce04bb2302bed76257
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278901
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2023-01-18 08:45:31 +00:00
Ryan Macnak a1dd92d345 [vm] Extend the hash_table.h templates to support weak sets.
Make the canonical string table weak.

TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/50648
Change-Id: I04d84a917bd71469d43483cefba8165628b9a63f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278673
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2023-01-17 21:45:02 +00:00
Ryan Macnak f3067e8740 [vm] Add WeakArray; to be used to create weak canonical sets.
TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/50648
Change-Id: I788a8e3e5e8383c0b8d6f248d64a33dc67013260
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278860
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2023-01-17 20:33:03 +00:00
Tess Strickland 8bcc849138 [vm] Test and fix resolving DWARF paths in obfuscated mode.
The DWARF generator would always attempt to deobfuscate the URL
retrieved from `Script` objects, whether it came from the `url`
or `resolved_url` field. However, the `resolved_url` field is not
obfuscated, and thus attempting to deobfuscate it could result in a different (and incorrect) string. Thus, only deobfuscate when not
resolving DWARF paths.

TEST=vm/dart{,_2}/use_resolve_dwarf_paths_flag

Bug: https://github.com/dart-lang/sdk/issues/44325
Change-Id: I57a3d47cc78035508082ccba23a2b1cd726ed6bb
Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279086
Commit-Queue: Tess Strickland <sstrickl@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
2023-01-17 12:34:49 +00:00
Ben Konyi 6f633c364a Reland "[ VM ] Add support for sampling old space allocations"
This reverts commit 0bd5a2b05e.

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

TEST=CQ

Change-Id: I4b643976a59adba8bd228a96ac75ae25ef8e206c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279120
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Derek Xu <derekx@google.com>
2023-01-16 16:28:43 +00:00
Daco Harkes f1a4f0e462 [vm] Split out main from main.cc
This enables running other C/C++ code before the Dart main function
without having to implement the full embedder API by including
main_lib and friends in a build but excluding `main.cc`.

TEST=ci build + flutter bot

Change-Id: I5739eb21fa6918b0a2c0f33f7d97dad73c5cf0b1
Cq-Include-Trybots: luci.dart.try:flutter-engine-linux-try,flutter-linux-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278518
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
2023-01-16 15:12:38 +00:00
Tess Strickland 0bd5a2b05e Revert "[ VM ] Add support for sampling old space allocations"
This reverts commit 6e4c0c2196.

Reason for revert: Broke ASAN builds

See https://github.com/dart-lang/sdk/issues/51023

Original change's description:
> [ VM ] Add support for sampling old space allocations
>
> TEST=DartAPI_HeapSampling
>
> Change-Id: Idf26fca6ae59720557d73627f727b00229dd1e9c
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/273860
> Reviewed-by: Siva Annamalai <asiva@google.com>
> Commit-Queue: Ben Konyi <bkonyi@google.com>

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

Change-Id: Id704f9070c430234b7cd78d8c2b67a5ed3e503fe
Cq-Include-Trybots: luci.dart.try:vm-kernel-asan-linux-release-x64-try,vm-kernel-precomp-asan-linux-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279100
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Tess Strickland <sstrickl@google.com>
Commit-Queue: Tess Strickland <sstrickl@google.com>
2023-01-16 11:42:45 +00:00
Brian Quinlan 3571b97b24 [win/io] Fix a bug where RawDataSocket would send truncated data on Windows.
Bug:https://github.com/dart-lang/sdk/issues/31873
Change-Id: I8856bad941330f24671fc2c61af736fc54cd9459
Tested: unit tests
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278981
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Brian Quinlan <bquinlan@google.com>
2023-01-13 20:36:55 +00:00
Ben Konyi 6e4c0c2196 [ VM ] Add support for sampling old space allocations
TEST=DartAPI_HeapSampling

Change-Id: Idf26fca6ae59720557d73627f727b00229dd1e9c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/273860
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2023-01-13 19:06:37 +00:00
Ryan Macnak cfd0c25ac3 [test] Run the service suite with --nnbd=strong.
TEST=ci
Change-Id: I6753a0a5eb9d93e4c33af0dc8d21dffe3e6aee54
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278944
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2023-01-13 18:32:27 +00:00
Martin Kustermann 30878542b8 [vm] Add vm/dart_2/isolates/reload* tests to vm/dart/isolates/* test suite
We do not want to lose coverage when no longer running _2 test suites.
Those tests were originally written at a time when package:front_end
wasn't migrated yet - and as such couldn't be run in sound null safety.

TEST=ci

Change-Id: Id26da7e5896345a9e165829ba4a22d36695b6da3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279007
Reviewed-by: William Hesse <whesse@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2023-01-13 15:29:20 +00:00
Martin Kustermann 23d3e86f95 [vm/compiler] Ensure the compiler runs without an active isolate
The compiler should not depend on isolate specific details since
compiled code is shared across isolates in an isolate group.

TEST=ci

Change-Id: I77332c2dea6b5a8e75c1a3be544d1b73a7a69497
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278900
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2023-01-13 14:38:41 +00:00
Alexander Markov cd3fc2b27d [vm] Regression test for #50148
Add a test for hot reload which involves a constructor tear-off
taken from a generic class.

TEST=vm/cc/IsolateReload_GenericConstructorTearOff

Issue: https://github.com/dart-lang/sdk/issues/50148
Change-Id: I690374e083e8c1bca61827d589e59c017a1fc1ee
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278945
Auto-Submit: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2023-01-12 20:32:38 +00:00
Sam Rawlins b9a42c82bc Move seven more Hints to be StaticWarnings:
* ARGUMENT_TYPE_NOT_ASSIGNABLE_TO_ERROR_HANDLER
* BODY_MIGHT_COMPLETE_NORMALLY_CATCH_ERROR
* BODY_MIGHT_COMPLETE_NORMALLY_NULLABLE
* DEPRECATED_EXTENDS_FUNCTION
* DEPRECATED_IMPLEMENTS_FUNCTION
* DEPRECATED_MIXIN_FUNCTION
* DEPRECATED_NEW_IN_COMMENT_REFERENCE

This requires allowing these warnings to be reported in language tests without being expected.

Also, observatory now must comply with BODY_MIGHT_COMPLETE_NORMALLY_NULLABLE (or we could ignore the diagnostic).

TESTED=unit tests

Change-Id: I8facfa48a8645bac5bf8037163076a8f0a0ad05e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/275740
Reviewed-by: Ben Konyi <bkonyi@google.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Bob Nystrom <rnystrom@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2023-01-12 19:17:35 +00:00
Vyacheslav Egorov 30964ae17a [vm/compiler] Fix IsRedundant predicate used by IL printing
Apply ShouldPrintInstruction in more places in IlTestPrinter.

TEST=run il tests

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

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try
Change-Id: I5290e4ced904c0c6eaf9df8e93397fcad29efc55
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278907
Auto-Submit: Slava Egorov <vegorov@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Slava Egorov <vegorov@google.com>
2023-01-11 21:57:33 +00:00
Ryan Macnak 44da85cc3b [vm, gc] Account for Smi targets of weaklings.
TEST=ci
Change-Id: I11183b1f9657d12aa58b440a2cf49b6a9e796da7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278672
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2023-01-11 17:00:59 +00:00
Vyacheslav Egorov 7e82a87658 [vm/compiler] Cleanup IL dumps a bit
* Do not print redundant ParallelMove instructions unless
  `--print_redundant_il` is specified.
* Do not print `;; Inlined` comments if
  `--no_include_inlining_info_in_disassembly` is specified.

TEST=manually

Change-Id: I9a8c83514e2a749484863a4cc010c8ea7950b0fb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278748
Commit-Queue: Slava Egorov <vegorov@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2023-01-11 15:51:55 +00:00
Alexander Aprelev 1ee5cdbe30 [vm/regexp] Make concurrent RegExp updates safe.
Fixes https://github.com/dart-lang/sdk/issues/50820.
TEST=one_regexp_many_workers_test on tsan

Change-Id: I2a5bd19dfe46b39515e980c82f43433bde514fbc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/277202
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2023-01-11 01:59:48 +00:00
Alexander Aprelev e1abb3490d [vm/gardening] Fix race in regress_46419_test
Service event listener is set up as isolate being resumed, races to get isolate paused event.

Fixes https://github.com/dart-lang/sdk/issues/50834
TEST=regress_46419_test

Change-Id: I29c7fe6d684b4ee0c28b70f92540a6860e38e075
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/277182
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2023-01-10 18:51:00 +00:00
Ryan Macnak ab287309e5 [vm] Don't wait for the idle timeout when the thread pool is shutting down.
TEST=time taskset --cpu-list 0 dart hello.dart
Bug: https://github.com/dart-lang/sdk/issues/47448
Change-Id: Iae3e8861bae4466d0f1aad7cf45707356ff7b98e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278665
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2023-01-10 17:46:38 +00:00
Alexander Markov 88400bdc42 [vm] Update number of parent function type arguments
Number of parent type arguments in function types is critical
for instantiation and subtype checks when there are nested
generic function types. So it is important to update
number of parent type arguments when parent function type is updated.

This change adds mechanism for updating number of parent
type arguments and uses the new mechanism in 2 cases:

1) When a type parameter is substituted during type instantiation.
   The substituted type can have nested generic function types and
   it should be updated if substituted inside another generic
   function type.

2) When creating a constructor tear-off for a generic class.
   Parameter types of the constructor could have nested generic
   function types and they should be updated as tear-off itself is a
   generic function.

TEST=language/function_subtype/generic_function_type_substitution_test
TEST=language/regress/regress50905_test

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

Change-Id: If13baa420939f5ac002ce32f3909953fb6998bd2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278525
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2023-01-10 03:10:14 +00:00
Josh Soref 46ee7eb873 Spelling samples
Closes https://github.com/dart-lang/sdk/pull/50919

TEST=ci

GitOrigin-RevId: 5ac389ee109d6a06f89d405da916945c36e1d24d
Change-Id: Ica078a14e87234459c0703c41c8bae5157132b14
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278532
Reviewed-by: Michael Thomsen <mit@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
Commit-Queue: Slava Egorov <vegorov@google.com>
2023-01-09 17:44:29 +00:00
Josh Soref aee77b9a33 Spelling tools
Closes https://github.com/dart-lang/sdk/pull/50880

TEST=ci

GitOrigin-RevId: ea8ecf4b7b921de0549df325be1a1f7879e86b72
Change-Id: I39315609a8390b012196a08c9ce4a9a6a50b1558
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278061
Reviewed-by: Slava Egorov <vegorov@google.com>
Commit-Queue: Michael Thomsen <mit@google.com>
Reviewed-by: Michael Thomsen <mit@google.com>
2023-01-09 15:48:57 +00:00
Josh Soref 7a129d6b91 spelling: is_signed
Closes https://github.com/dart-lang/sdk/pull/50808

TEST=ci

GitOrigin-RevId: ea4034173f9028fc4dfe0adb6a3e9bae34027843
Change-Id: I588cfe0765476705d7da8130e6121e25275be7f2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/276774
Commit-Queue: Michael Thomsen <mit@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2023-01-09 13:21:55 +00:00