• Andreas Haas's avatar
    [wasm] Refactor AtomicWait implementation · 77d4e230
    Andreas Haas authored
    The existing implementation included aspects that are not
    straight-forward to implement in Liftoff and seemed inefficient:
    * Convert the timeout in WebAssembly code from I64 to F64, just to
      convert it back in the runtime.
      * On 32-bit platforms this conversion needs an additional C-call.
    * Split the I64 expected value from I64 into two I32 values in the
      wasm-compiler.
      * Ideally the int64-lowering takes care of 32-bit specific handling.
    
    With this CL the timeout and the expected value are passed as I64 to
    the runtime (a builtin moves the I64 into a bigint for that). The
    int64-lowering takes care of 32-bit platforms. There are special
    builtins for 32-bit platforms, but they are written such that ideally
    also the int64-lowering could create them.
    
    R=jkummerow@chromium.org, binji@chromium.org
    
    Bug: v8:10108
    Change-Id: I2dbba5839779961b1c5bde4c23fc3f38f1895a52
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2071867
    Commit-Queue: Andreas Haas <ahaas@chromium.org>
    Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
    Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
    Reviewed-by: 's avatarBen Smith <binji@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#66497}
    77d4e230
Name
Last commit
Last update
..
arm Loading commit data...
arm64 Loading commit data...
ia32 Loading commit data...
mips Loading commit data...
mips64 Loading commit data...
ppc Loading commit data...
s390 Loading commit data...
x64 Loading commit data...
OWNERS Loading commit data...
arguments-inl.h Loading commit data...
arguments.cc Loading commit data...
arguments.h Loading commit data...
execution.cc Loading commit data...
execution.h Loading commit data...
frame-constants.h Loading commit data...
frames-inl.h Loading commit data...
frames.cc Loading commit data...
frames.h Loading commit data...
futex-emulation.cc Loading commit data...
futex-emulation.h Loading commit data...
interrupts-scope.cc Loading commit data...
interrupts-scope.h Loading commit data...
isolate-data.h Loading commit data...
isolate-inl.h Loading commit data...
isolate-utils-inl.h Loading commit data...
isolate-utils.h Loading commit data...
isolate.cc Loading commit data...
isolate.h Loading commit data...
messages.cc Loading commit data...
messages.h Loading commit data...
microtask-queue.cc Loading commit data...
microtask-queue.h Loading commit data...
off-thread-isolate.cc Loading commit data...
off-thread-isolate.h Loading commit data...
pointer-authentication-dummy.h Loading commit data...
pointer-authentication.h Loading commit data...
protectors-inl.h Loading commit data...
protectors.cc Loading commit data...
protectors.h Loading commit data...
runtime-profiler.cc Loading commit data...
runtime-profiler.h Loading commit data...
simulator-base.cc Loading commit data...
simulator-base.h Loading commit data...
simulator.h Loading commit data...
stack-guard.cc Loading commit data...
stack-guard.h Loading commit data...
thread-id.cc Loading commit data...
thread-id.h Loading commit data...
thread-local-top.cc Loading commit data...
thread-local-top.h Loading commit data...
v8threads.cc Loading commit data...
v8threads.h Loading commit data...
vm-state-inl.h Loading commit data...
vm-state.h Loading commit data...