• 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
runtime-wasm.cc 23.4 KB