• bjaideep's avatar
    PPC/s390: [wasm] TrapIf and TrapUnless TurboFan operators implemented on arm. · 544308b8
    bjaideep authored
    Port ca8d3ba7
    
    Original Commit Message:
    
        Original commit message:
        [wasm] Introduce the TrapIf and TrapUnless operators to generate trap code.
    
        Some instructions in WebAssembly trap for some inputs, which means that the
        execution is terminated and (at least at the moment) a JavaScript exception is
        thrown. Examples for traps are out-of-bounds memory accesses, or integer
        divisions by zero.
    
        Without the TrapIf and TrapUnless operators trap check in WebAssembly introduces 5
        TurboFan nodes (branch, if_true, if_false, trap-reason constant, trap-position
        constant), in addition to the trap condition itself. Additionally, each
        WebAssembly function has four TurboFan nodes (merge, effect_phi, 2 phis) whose
        number of inputs is linear to the number of trap checks in the function.
        Especially for functions with high numbers of trap checks we observe a
        significant slowdown in compilation time, down to 0.22 MiB/s in the sqlite
        benchmark instead of the average of 3 MiB/s in other benchmarks. By introducing
        a TrapIf common operator only a single node is necessary per trap check, in
        addition to the trap condition. Also the nodes which are shared between trap
        checks (merge, effect_phi, 2 phis) would disappear. First measurements suggest a
        speedup of 30-50% on average.
    
        This CL only implements TrapIf and TrapUnless on x64. The implementation is also
        hidden behind the --wasm-trap-if flag.
    
        Please take a special look at how the source position is transfered from the
        instruction selector to the code generator, and at the context that is used for
        the runtime call.
    
    R=ahaas@chromium.org, titzer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
    BUG=
    LOG=N
    
    Review-Url: https://codereview.chromium.org/2666433002
    Cr-Commit-Position: refs/heads/master@{#42793}
    544308b8
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
docs Loading commit data...
gni Loading commit data...
gypfiles Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
Makefile Loading commit data...
Makefile.android Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...
snapshot_toolchain.gni Loading commit data...