Description[vm] Implement more efficient CAS in simarm/simarm64 modes
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, rmacnak@google.com
Committed: https://github.com/dart-lang/sdk/commit/db26c8934799de6205b1c9c9dc498d8fc58a0d07
Patch Set 1 #Patch Set 2 : Relax assertions for unit test which does clrex between ldrex and strex #
Total comments: 5
Patch Set 3 : Correct comments #
Messages
Total messages: 8 (3 generated)
|