• Caitlin Potter's avatar
    Reland "[esnext] re-implement template strings" · b8229612
    Caitlin Potter authored
    - Add a new bytecode for the ToString operation, replacing the old
    intrinsic call (currently does not collect type feedback).
    - Add a new AST node to represent TemplateLiterals, and avoid
    generating unnecessary ToString operations in some simple cases.
    - Use a single feedback slot for each string addition, because the
    type feedback should always be the same for each addition
    
    This seems to produce a very slight improvement on JSTests benchmarks
    and bench-ruben.js from v8:7415, and it's possible that type feedback
    for the ToString bytecode could provide more opportunities to eliminate
    the runtime call in TurboFan.
    
    Doesn't touch tagged templates
    
    [esnext] fix OOB read in ASTPrinter::VisistTemplateLiteral
    
    Fixes an error where TemplateLiteral printing in --print-ast
    would try to read an element beyond the length of a vector.
    
    BUG=v8:7415, chromium:820596
    R=adamk@chromium.org, gsathya@chromum.org, rmcilroy@chromium.org, ishell@chromium.org, bmeurer@chromium.org
    
    Change-Id: Ie56894f73a6445550a5f95f42160c4e29ab1da42
    Reviewed-on: https://chromium-review.googlesource.com/958408Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
    Commit-Queue: Caitlin Potter <caitp@igalia.com>
    Cr-Commit-Position: refs/heads/master@{#51933}
    b8229612
Name
Last commit
Last update
..
OWNERS Loading commit data...
duplicate-finder.h Loading commit data...
expression-classifier.h Loading commit data...
expression-scope-reparenter.cc Loading commit data...
expression-scope-reparenter.h Loading commit data...
func-name-inferrer.cc Loading commit data...
func-name-inferrer.h Loading commit data...
parse-info.cc Loading commit data...
parse-info.h Loading commit data...
parser-base.h Loading commit data...
parser.cc Loading commit data...
parser.h Loading commit data...
parsing.cc Loading commit data...
parsing.h Loading commit data...
pattern-rewriter.cc Loading commit data...
preparse-data.cc Loading commit data...
preparse-data.h Loading commit data...
preparsed-scope-data.cc Loading commit data...
preparsed-scope-data.h Loading commit data...
preparser.cc Loading commit data...
preparser.h Loading commit data...
rewriter.cc Loading commit data...
rewriter.h Loading commit data...
scanner-character-streams.cc Loading commit data...
scanner-character-streams.h Loading commit data...
scanner.cc Loading commit data...
scanner.h Loading commit data...
token.cc Loading commit data...
token.h Loading commit data...