• Andreas Haas's avatar
    Reland "[wasm] Refactor AtomicWait implementation" · 7ad6b04e
    Andreas Haas authored
    Stack parameters in the StubCallDescriptor were set to the wrong type. I
    changed it now so that for stack parameters that are specified in the
    CallInterfaceDescriptor, type specified type is used. All other
    parameters are assumed to be tagged, as it has been until now.
    
    Original change's description:
    > [wasm] Refactor AtomicWait implementation
    >
    > 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.
    
    Bug: v8:10108
    Change-Id: Ib87b543666708457c0d686208a86e46cdca3f9a2
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2080362Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
    Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
    Commit-Queue: Andreas Haas <ahaas@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#66533}
    7ad6b04e
futex-emulation.cc 11.6 KB