• Caitlin Potter's avatar
    [esnext] implement spec change to TaggedTemplate callsite caching · d3ca0d00
    Caitlin Potter authored
    Implements the change outlined in https://github.com/tc39/ecma262/pull/890,
    which has been ratified and pulled into the specification. In particular,
    template callsite objects are no longer kept in a global, eternal Map, but
    are instead associated with their callsite, which can be collected. This
    prevents a memory leak incurred by TaggedTemplate calls.
    
    Changes, summarized:
    
        - Remove the TemplateMap and TemplateMapShape objects, instead caching
          template objects in the feedback vector.
        - Remove the `hash` member of TemplateObjectDescriptor, and the Equals
          method (used by TemplateMap)
        - Add a new FeedbackSlotKind (kTemplateObject), which behaves similarly
          to FeedbackSlotKind::kLiteral, but prevents eval caching. This ensures
          that a new feedback vector is always created for eval() containing tagged
          templates, even when the CompilationCache is used.
        - GetTemplateObject bytecode now takes a feedback index, and only calls
          into the runtime if the feedback is Smi::kZero (uninitialized).
    
    BUG=v8:3230, v8:2891
    R=littledan@chromium.org, yangguo@chromium.org, bmeurer@chromium.org,
    rmcilroy@chromium.org
    
    Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
    Change-Id: I7827bc148d3d93e2b056ebf63dd624da196ad423
    Reviewed-on: https://chromium-review.googlesource.com/624564
    Commit-Queue: Caitlin Potter <caitp@igalia.com>
    Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
    Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#51248}
    d3ca0d00
Name
Last commit
Last update
..
api Loading commit data...
asmjs Loading commit data...
base Loading commit data...
compiler Loading commit data...
compiler-dispatcher Loading commit data...
heap Loading commit data...
interpreter Loading commit data...
libplatform Loading commit data...
parser Loading commit data...
wasm Loading commit data...
zone Loading commit data...
BUILD.gn Loading commit data...
DEPS Loading commit data...
allocation-unittest.cc Loading commit data...
bigint-unittest.cc Loading commit data...
cancelable-tasks-unittest.cc Loading commit data...
char-predicates-unittest.cc Loading commit data...
code-stub-assembler-unittest.cc Loading commit data...
code-stub-assembler-unittest.h Loading commit data...
counters-unittest.cc Loading commit data...
detachable-vector-unittest.cc Loading commit data...
eh-frame-iterator-unittest.cc Loading commit data...
eh-frame-writer-unittest.cc Loading commit data...
locked-queue-unittest.cc Loading commit data...
object-unittest.cc Loading commit data...
register-configuration-unittest.cc Loading commit data...
run-all-unittests.cc Loading commit data...
source-position-table-unittest.cc Loading commit data...
test-helpers.cc Loading commit data...
test-helpers.h Loading commit data...
test-utils.cc Loading commit data...
test-utils.h Loading commit data...
testcfg.py Loading commit data...
unicode-unittest.cc Loading commit data...
unittests.isolate Loading commit data...
unittests.status Loading commit data...
utils-unittest.cc Loading commit data...
value-serializer-unittest.cc Loading commit data...