9711289d06
The change is made since for switch statements with lots of cases, where each case is a constant integer, the emitted bytecode is still a series of jumps, when we can instead use a jump table. If there are 6 or more cases (similar to GCC) of Smi literals, and if the max Smi case minus the min Smi case is not more than 3 times the number of cases, we use a jump table up front to handle Smi's, and then use traditional if-else logic for the rest of the cases. We then use the jump table in interpreter/bytecode-jump-table to do the optimization. This tries to go off issue 9738 in v8's issue tracker. It is not exactly the same, since that recommends doing the work at JIT-time, but has similar ideas. It also partially goes off issue 10764. Bug: v8:9738 Change-Id: Ic805682ee3abf9ce464bb733b427fa0c83a6e10c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2904926 Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#75323} |
||
---|---|---|
.. | ||
benchmarks | ||
bigint | ||
cctest | ||
common | ||
debugger | ||
debugging | ||
fuzzer | ||
fuzzilli | ||
inspector | ||
intl | ||
js-perf-test | ||
memory | ||
message | ||
mjsunit | ||
mkgrokdump | ||
mozilla | ||
test262 | ||
torque | ||
unittests | ||
wasm-api-tests | ||
wasm-js | ||
wasm-spec-tests | ||
webkit | ||
BUILD.gn | ||
OWNERS |