• Michael Starzinger's avatar
    [wasm] Support concurrent patching of jump table. · 7579b1e3
    Michael Starzinger authored
    This adds initial support for concurrently patching jump table slots. It
    is needed once different Isolates share code (for the --wasm-shared-code
    feature). We need to ensure that instructions holding the target address
    within a jump table slot do not cross cache-line boundaries. To do this,
    the jump table has been split into consecutive pages.
    
    Note that this also adds a stress test for multiple threads hammering at
    a single slot concurrently. The test is currently limited to the ia32
    and the x64 architecture, but will be extended to cover others. The test
    reliably triggers tearing of the target address on almost every run of
    the test and hence serves to prevent regressions.
    
    R=clemensh@chromium.org
    TEST=cctest/test-jump-table-assembler
    BUG=v8:8018
    
    Change-Id: Ife56bbb61ffcae5d8906ca7b8c604b195603707c
    Reviewed-on: https://chromium-review.googlesource.com/1163664
    Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
    Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#54942}
    7579b1e3
test-jump-table-assembler.cc 5.59 KB