• Thibaud Michaud's avatar
    [wasm] Fix typing of stack-switching wrappers · 08b3da7f
    Thibaud Michaud authored
    - Suspender.suspendOnReturnedPromise expects a function with type
    [ti*]->[externref] and returns a function with the same type.
    - Suspender.returnPromiseOnSuspend expects a function with type
    [ti*]->[to] and returns a function with type [ti*]->[externref].
    
    Changes:
    - Check the wrapped function's return types
    - Skip type checking of return types when importing a wrapper (and
    assert that the return type is externref)
    - Add special case for WebAssembly.Function.type of a
    WasmExportedFunction: it currently returns the signature declared by
    the module. Change the return type to externref if this is a
    stack-switching export.
    
    Bug: v8:12191
    Change-Id: I6619c306e9613825ad1b021cb3400d73cd684656
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3435190Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
    Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#78973}
    08b3da7f
wasm-compiler.cc 339 KB