• Clemens Backes's avatar
    [wasm] Merge two related Mutexes into one · 2eefd6a1
    Clemens Backes authored
    This changes the interaction between {NativeModule} and
    {WasmCodeAllocator}. The {WasmCodeAllocator} is a field of
    {NativeModule}, and only called directly by the {NativeModule}. So far,
    there were two mutexes involved, the {allocation_mutex_} in
    {NativeModule}, and {mutex_} in {WasmCodeAllocator}. This caused
    problems with lock order inversion.
    
    This CL thus merges the two mutex, by always locking the mutex in
    {NativeModule} when calling a non-atomic method in {WasmCodeAllocator}.
    This serializes slightly more code, but none of this should be
    performance-critical.
    
    This removes the awkward {OptionalLock} class and adds the "Locked"
    suffix to a few methods to document that those can only be called
    while holding the allocation mutex.
    
    R=jkummerow@chromium.org
    CC=​dlehmann@google.com
    
    Bug: v8:11663
    Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel_ng
    Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_isolates_rel_ng
    Cq-Include-Trybots: luci.v8.try:v8_linux_arm64_gc_stress_dbg_ng
    Cq-Include-Trybots: luci.v8.try:v8_linux_gc_stress_dbg_ng
    Change-Id: I8895d61fef23a57b218e068532375bac941a5a77
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831477
    Commit-Queue: Clemens Backes <clemensb@chromium.org>
    Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#74026}
    2eefd6a1
wasm-code-manager.h 39.4 KB