• 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
regress-crbug-820596.js 243 Bytes