• 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
..
arguments-inl.h Loading commit data...
arguments.h Loading commit data...
bigint.cc Loading commit data...
bigint.h Loading commit data...
code-inl.h Loading commit data...
code.h Loading commit data...
compilation-cache-inl.h Loading commit data...
compilation-cache.h Loading commit data...
data-handler-inl.h Loading commit data...
data-handler.h Loading commit data...
debug-objects-inl.h Loading commit data...
debug-objects.cc Loading commit data...
debug-objects.h Loading commit data...
descriptor-array.h Loading commit data...
dictionary.h Loading commit data...
fixed-array-inl.h Loading commit data...
fixed-array.h Loading commit data...
frame-array-inl.h Loading commit data...
frame-array.h Loading commit data...
hash-table-inl.h Loading commit data...
hash-table.h Loading commit data...
intl-objects.cc Loading commit data...
intl-objects.h Loading commit data...
js-array-inl.h Loading commit data...
js-array.h Loading commit data...
js-collection-inl.h Loading commit data...
js-collection.h Loading commit data...
js-regexp-inl.h Loading commit data...
js-regexp.h Loading commit data...
literal-objects-inl.h Loading commit data...
literal-objects.cc Loading commit data...
literal-objects.h Loading commit data...
map-inl.h Loading commit data...
map.h Loading commit data...
module-inl.h Loading commit data...
module.cc Loading commit data...
module.h Loading commit data...
name-inl.h Loading commit data...
name.h Loading commit data...
object-macros-undef.h Loading commit data...
object-macros.h Loading commit data...
property-descriptor-object-inl.h Loading commit data...
property-descriptor-object.h Loading commit data...
regexp-match-info.h Loading commit data...
scope-info.cc Loading commit data...
scope-info.h Loading commit data...
script-inl.h Loading commit data...
script.h Loading commit data...
shared-function-info-inl.h Loading commit data...
shared-function-info.h Loading commit data...
string-inl.h Loading commit data...
string-table.h Loading commit data...
string.h Loading commit data...
template-objects.cc Loading commit data...
template-objects.h Loading commit data...