• Andreas Haas's avatar
    [wasm] Refactor indirect function calls · 02f18b2d
    Andreas Haas authored
    This is the combined second and third step of refactoring indirect
    function calls through tables with index > 0 to work without runtime
    calls.
    
    The first CL introduces the WasmIndirectFunctionTable heap object. For
    a table of type anyfunc within a WebAssembly instance,
    WasmIndirectFunctionTable stores the size, the signature id's, the
    call targets, and the reference parameters for that table. I used the
    names that are already used for the matching fields of the
    WasmInstanceObject.
    
    The second CL expands the IndirectFunctionTableEntry to work also on
    WasmIndirectFunctionTable objects. All changes to a function table go
    through this class.
    
    The third CL introduces uses of the WasmIndirectFunctionTable. In this
    CL I change the code generation in TurboFan to replace runime calls with
    direct accesses to the new WasmIndirectFunctionTable. Additionally I
    extended the initialization of WasmIndirectFunctionTable, and also
    implement Table.grow.
    
    R=mstarzinger@chromium.org
    
    Bug: v8:7581
    Change-Id: Ic7615c0138562d27897683358ddc0943add1acfe
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1684186
    Commit-Queue: Andreas Haas <ahaas@chromium.org>
    Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#62515}
    02f18b2d
wasm-compiler.cc 268 KB