Allows categories to be selected through arguments to `trace` instead of changing VM flags and rebuilding.
Change-Id: Ia1ec6b58ca0b765c3d675b7d4938acc5f624b768
Reviewed-on: https://dart-review.googlesource.com/c/91860
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
InlineCacheMissHandler* runtime entries may cause class finalization and
potentially run more Dart code (for example, to evaluate pragma annotations).
That could clobber arguments descriptor in simulator/interpreter.
Usually classes are finalized before their instances are allocated.
However, VM creates instances of certain built-in classes "magically",
without finalizing classes. For such classes finalization can occur
on the first method invocation.
Change-Id: I247197baf36858bfa43812aaaed02b10584762e0
Reviewed-on: https://dart-review.googlesource.com/c/94960
Auto-Submit: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Previously, in order to get GenericCovariantImpl property of a type
parameter we had to (re-)read kernel.
This change is a preparation for decoupling flow graph building of
special functions from kernel reading.
Change-Id: I48b45d2cece683ac3a3bd0ed506ddfcc3c526826
Reviewed-on: https://dart-review.googlesource.com/c/94641
Commit-Queue: Régis Crelier <regis@google.com>
Auto-Submit: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Now that TLAB is enabled, background compiler can use new space for short-lived data created during kernel loading.
Change-Id: I0a05510bcc73be268895f093cd1422d80d6e39bf
Reviewed-on: https://dart-review.googlesource.com/c/94361
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
Ensures, by default, multiple core or app snapshots are capable of being loaded into the same process. Flags that affect stub generation can still create incompatibilities. A later CL will internalize VM isolate snapshot generation to the VM build and ensure compatibility.
Change-Id: I247063d5a3a611b04963b8e8ab2ac8a1f20ea57a
Reviewed-on: https://dart-review.googlesource.com/c/93962
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
- Added `Dart_SetDartLibrarySourcesKernel` to the Dart embedding API.
- vm_platform_strong.dill now contains the Dart SDK sources
- If vm_platform_strong.dill is linked into the Dart binary, the first
request for a Dart SDK Script object from the VM service will load the
sources for the script from the linked in kernel buffer.
Change-Id: I664abe31f9378d25ec79c21edce0b237a278495d
Reviewed-on: https://dart-review.googlesource.com/c/93375
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
- Reset both new and old external sizes for both new and old space GC. Every GC visits weak handles for both generations.
- Don't double count external old size during promotion.
Change-Id: Ic6ad1b4cad58ad18637cee974b170a2eab8afe29
Reviewed-on: https://dart-review.googlesource.com/c/93881
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Here's how the deadlock can happen:
* The vm-service background compiler asks all threads to go to a
safepoint before it finalizes the code. Then it finalizes the
code and notifies code observers. A code observer posts a
message to the vm-service. Posting this message requires holding the
monitor of the receiving isolate's message handler (see
MessageHandler::PostMessage).
* The vm-service mutator holds it's message handlers monitor and
enters the isolate (see MessageHandler::HandleMessages). The
StartIsolateScope schedules the mutator thread, which will in return
see that BG compiler wants to safepoint, so it waits for BG compiler
to finish.
At this point the mutator holds the MessageHandler's monitor and waits
for BG compiler to finish safepoint. The BG compiler tries to post a
message to the message handler (and the monitor is locked).
-> This CL ensures the BG compiler only arranges a safepoint before it
starts creating the instructions object. It fills it in and exits the
safepoint again. Only then do we notify code observers.
Furthermore this CL ensures we transition out of VM to native state
before calling the Dart_PostCMessage() function.
Change-Id: I5320440d54ca303a1ccc7556600a42d37cd6e1de
Reviewed-on: https://dart-review.googlesource.com/c/93421
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Internal builds in Google are catching this as an error.
I'm guarding it because I assume we might support building using other
compilers.
Change-Id: I665099cace9c6a40d737c471dd1b0fdb326fea39
Reviewed-on: https://dart-review.googlesource.com/c/91162
Commit-Queue: Siva Annamalai <asiva@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
This is a re-land of "[vm/extensions] Fix Loader::ReloadNativeExtensions(...)."
The native extension test was failing in hot-reload: this has been fixed.
Change-Id: Ic18da8cfbc6a3dba8aac09d654dce616487a67d7
Reviewed-on: https://dart-review.googlesource.com/c/92800
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Auto-Submit: Samir Jindel <sjindel@google.com>
Rationale:
A bit more constant propagation for strings, this time
using actual values (rather than just testing identity).
Note that the worklist iteration broke down a bit for
this added case since push arguments do not have a
use-link to the call. Also note that the added cases
have some overlap with the inliner, but are able to
propagate values for different cases.
https://github.com/dart-lang/sdk/issues/35882
Change-Id: I380fca6ab90933e6342cd0572101cb94ed8c78ab
Reviewed-on: https://dart-review.googlesource.com/c/92861
Commit-Queue: Aart Bik <ajcbik@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
The script URLs for core libraries were being recorded as follows
- dart:core for org-dartlang-sdk:///sdk/lib/core/core.dart
- dart:core/runtime/libcore_patch.dart for org-dartlang-sdk:///runtime/lib/core_patch.dart
- dart:io/runtime/binfilter_patch.dart for org-dartlang-sdk:///runtime/bin/filter_patch.dart
Now we record them as
- dart:core/core.dart for org-dartlang-sdk:///sdk/lib/core/core.dart
- dart:core/runtime/lib/core_patch.dart for org-dartlang-sdk:///runtime/lib/core_patch.dart
- dart:io/runtime/bin/filter_patch.dart for org-dartlang-sdk:///runtime/bin/filter_patch.dart
Change-Id: I645939e7ba937034471044fb492a5ecdb9a50bf5
Reviewed-on: https://dart-review.googlesource.com/c/92922
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Siva Annamalai <asiva@google.com>
This is the next step towards preventing compiler from directly peeking
into runtime and instead interact with runtime through a well defined
surface.
This CL decouples the hand-written intrinsifier code from the runtime:
* the intrinsifier is split up into a GraphIntrinsifier and AsmIntrinsifier
* the recognized methods list is moved to a separate .h file
* all intrinsifier code is moved into dart::compiler namespace
* the AsmIntrinsifier is only interacting with RT through runtime_api.h
Issue https://github.com/dart-lang/sdk/issues/31709
Change-Id: I0a73ad620e051dd49c9db7da3241212b3b74ccdd
Reviewed-on: https://dart-review.googlesource.com/c/92740
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Aart Bik <ajcbik@google.com>
Previously these instructions were not safe to use on JIT, because they
crated catch-entry moves which are not used in JIT.
Now we assign deopt-infos to these slow paths so they can handle exceptions
correctly in JIT.
I considered removing uses of CheckNull in JIT mode, but I did not find a simple
replacement for all the existing uses.
Fixes#35887.
Change-Id: I05dfb46200679934d0ff6114cae8723f4908af8e
Reviewed-on: https://dart-review.googlesource.com/c/92783
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Samir Jindel <sjindel@google.com>
Auto-Submit: Samir Jindel <sjindel@google.com>
Prototype for `dart:ffi` on Linux/MacOS x64 in JIT mode.
`dart:ffi` is experimental and its API is likely to change in the future.
Progress and design decisions are tracked in https://github.com/dart-lang/sdk/projects/13
issue: https://github.com/dart-lang/sdk/issues/34452
Change-Id: Ifa4566388e42c8757f154741d11e303465ef305d
Cq-Include-Trybots: luci.dart.try:vm-kernel-optcounter-threshold-linux-release-x64-try, vm-kernel-precomp-linux-debug-x64-try, vm-kernel-precomp-linux-release-simarm-try, vm-kernel-precomp-linux-release-simarm64-try, vm-kernel-precomp-linux-release-x64-try, vm-kernel-precomp-mac-release-simarm64-try, vm-kernel-precomp-win-release-x64-try, vm-kernel-mac-debug-x64-try, vm-kernel-asan-linux-release-x64
Reviewed-on: https://dart-review.googlesource.com/c/80124
Reviewed-by: Samir Jindel <sjindel@google.com>
Auto-Submit: Daco Harkes <dacoharkes@google.com>
Rationale:
Loop part was not checking anything (no ASSERT).
Also, made test more strict (block should be
in all enveloping loops).
Change-Id: Ib918afa9c130dc8aa26cd8e8104e735075ff1176
Reviewed-on: https://dart-review.googlesource.com/c/92863
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
Fix some types of base objects in the V8 snapshot profile output.
Rename ICData::ic_data_ to entries_ as it does not point to an ICData.
Change-Id: Ie80974e2eb741810a5f540dd40e5d60a519d8e4e
Reviewed-on: https://dart-review.googlesource.com/c/92665
Reviewed-by: Samir Jindel <sjindel@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
This is the next step towards preventing compiler from directly peeking
into runtime and instead interact with runtime through a well defined
surface.
This CL decouples the hand-written stub codes from the runtime. The
target architecture dependent stubs are moved to
dart::compiler::StubCodeCompiler which use dart::compiler::target:*
for accessing any runtime related code.
The generation of type testing stubs is moved to separate files for the
time being.
Issue https://github.com/dart-lang/sdk/issues/31709
Change-Id: Icd0995b18a7bac496b1e12231cf437943f5c94f1
Reviewed-on: https://dart-review.googlesource.com/c/92720
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
Auto-Submit: Martin Kustermann <kustermann@google.com>