Description[vm] Implement more efficient CAS in simarm/simarm64 modes, v.2
This CL includes db26c8934799de6205b1c9c9dc498d8fc58a0d07 (patch set #1)
with fix (patch set #2):
* Include simulator.h explicitly where it is required as it is no
longer included implicitly through other header files.
Original review: https://codereview.chromium.org/2995803002/
When running on the simulator for arm/arm64, compare-and-swap operations
used in VM were synchronized with simulator using mutex.
It heavily impacts performance when doing parallel marking due to high
contention (see #30317).
This synchronization was implemented in order to make simulated
LDREX/STREX instructions aware of CAS performed in VM.
This CL drops this synchronization between VM and simulator:
CAS operations in VM become regular, and simulator remembers value loaded
with load-exclusive and performs CAS when doing store-exclusive to catch
any concurrent modifications.
Speeds up gen_snapshot of flutter benchmark complex_layout from 9.2s
to 8.0s on my MacBook.
R=asiva@google.com
Committed: https://github.com/dart-lang/sdk/commit/5aead50245aa8e761506409094060fa5267befbc
Patch Set 1 #Patch Set 2 : Include simulator.h explicitly where it is required #
Messages
Total messages: 7 (4 generated)
|