• Benedikt Meurer's avatar
    [turbofan] Constant-fold string concatenation during typed lowering. · faea5031
    Benedikt Meurer authored
    During JSTypedLowering, when we see a JSAdd where we know that at least
    one side is already a String, we can try to strength-reduce the other
    side to a string as well. And once we have that, check whether both
    sides are now String constants, and if the concatenation won't overflow
    the string length limit, we can just constant-fold the StringAdd.
    
    This improves the Six Speed template_string benchmarks by up to 5x, as
    we no longer need to perform the String concatenations on every loop
    iteration.
    
    Bug: v8:6815
    Change-Id: I8c47b2adf66b585d2f191cf805604b435f6256cd
    Also-By: jarin@chromium.org
    Reviewed-on: https://chromium-review.googlesource.com/663181
    Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
    Commit-Queue: Michael Stanton <mvstanton@chromium.org>
    Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#47974}
    faea5031
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...
.editorconfig 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...