• Sigurd Schneider's avatar
    [turbofan] Speculate on bounds checks for String#char[Code]At · ee2d85a3
    Sigurd Schneider authored
    With the new builtin optimization guard we can just speculatively assume
    that the index passed to String#charAt and String#charCodeAt (in
    optimized
    code) is going to be within the valid range for the receiver. This is
    what Crankshaft used to do, and it avoids Smi checks on the result for
    String#charCodeAt, since it can no longer return NaN.
    
    This gives rise to further optimizations of these builtins (i.e. to
    completely avoid the tagging of char codes), and by itself already
    improves the regression test originally reported from 650ms to
    610ms.
    
    Bug: v8:7127, v8:7326
    Change-Id: I6c160540a1e002a37e44fa7f920e5e8f8c2c4210
    Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
    Reviewed-on: https://chromium-review.googlesource.com/873382
    Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
    Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#50888}
    ee2d85a3
Name
Last commit
Last update
..
benchmarks Loading commit data...
cctest Loading commit data...
common Loading commit data...
debugger Loading commit data...
fuzzer Loading commit data...
inspector Loading commit data...
intl Loading commit data...
js-perf-test Loading commit data...
memory Loading commit data...
message Loading commit data...
mjsunit Loading commit data...
mkgrokdump Loading commit data...
mozilla Loading commit data...
preparser Loading commit data...
test262 Loading commit data...
unittests Loading commit data...
wasm-spec-tests Loading commit data...
webkit Loading commit data...
BUILD.gn Loading commit data...
bot_default.gyp Loading commit data...
bot_default.isolate Loading commit data...
d8_default.gyp Loading commit data...
d8_default.isolate Loading commit data...
default.gyp Loading commit data...
default.isolate Loading commit data...
optimize_for_size.gyp Loading commit data...
optimize_for_size.isolate Loading commit data...
perf.gyp Loading commit data...
perf.isolate Loading commit data...