v8/test/unittests/interpreter
Caitlin Potter d3ca0d0050 [esnext] implement spec change to TaggedTemplate callsite caching
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: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#51248}
2018-02-12 17:06:18 +00:00
..
bytecode-array-builder-unittest.cc [esnext] implement spec change to TaggedTemplate callsite caching 2018-02-12 17:06:18 +00:00
bytecode-array-iterator-unittest.cc [Interpreter] Make RegisterList constructor private to avoid missue. 2017-12-13 13:15:35 +00:00
bytecode-array-random-iterator-unittest.cc [Interpreter] Make RegisterList constructor private to avoid missue. 2017-12-13 13:15:35 +00:00
bytecode-array-writer-unittest.cc [jumbo] fix B macro/symbol clashes in arm64 builds 2017-11-09 09:33:45 +00:00
bytecode-decoder-unittest.cc [jumbo] fix B macro/symbol clashes in arm64 builds 2017-11-09 09:33:45 +00:00
bytecode-node-unittest.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
bytecode-operands-unittest.cc [Interpreter] Templatize AccumulatorUsage and OperandType for bytecode creation. 2016-12-15 07:56:21 +00:00
bytecode-register-allocator-unittest.cc include fixing: api.h shouldn't include objects-inl.h 2017-01-09 13:43:28 +00:00
bytecode-register-optimizer-unittest.cc [Interpreter] Make RegisterList constructor private to avoid missue. 2017-12-13 13:15:35 +00:00
bytecode-source-info-unittest.cc [Interpreter] Remove BytecodePipeline. 2017-04-12 15:18:50 +00:00
bytecode-utils.h [Interpreter] Make RegisterList constructor private to avoid missue. 2017-12-13 13:15:35 +00:00
bytecodes-unittest.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
constant-array-builder-unittest.cc [ast] Move AstValue implementation into Literal 2017-10-27 20:21:29 +00:00
interpreter-assembler-unittest.cc [Ignition] [TurboFan] Generate speculation poison in code generator. 2018-02-12 09:26:58 +00:00
interpreter-assembler-unittest.h [Ignition] [TurboFan] Generate speculation poison in code generator. 2018-02-12 09:26:58 +00:00