diff options
Diffstat (limited to 'deps/v8/src/objects/template-objects.h')
-rw-r--r-- | deps/v8/src/objects/template-objects.h | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/deps/v8/src/objects/template-objects.h b/deps/v8/src/objects/template-objects.h index e24deabd8d..e99c8530e6 100644 --- a/deps/v8/src/objects/template-objects.h +++ b/deps/v8/src/objects/template-objects.h @@ -5,8 +5,7 @@ #ifndef V8_OBJECTS_TEMPLATE_OBJECTS_H_ #define V8_OBJECTS_TEMPLATE_OBJECTS_H_ -#include "src/objects.h" -#include "src/objects/hash-table.h" +#include "src/objects/fixed-array.h" #include "src/objects/struct.h" // Has to be the last include (doesn't have include guards): @@ -15,17 +14,40 @@ namespace v8 { namespace internal { -// TemplateObjectDescription is a triple of hash, raw strings and cooked -// strings for tagged template literals. Used to communicate with the runtime -// for template object creation within the {Runtime_CreateTemplateObject} -// method. +// CachedTemplateObject is a tuple used to cache a TemplateObject that has been +// created. All the CachedTemplateObject's for a given SharedFunctionInfo form a +// linked list via the next fields. +class CachedTemplateObject final : public Tuple3 { + public: + DECL_INT_ACCESSORS(slot_id) + DECL_ACCESSORS(template_object, JSArray) + DECL_ACCESSORS(next, HeapObject) + + static Handle<CachedTemplateObject> New(Isolate* isolate, int slot_id, + Handle<JSArray> template_object, + Handle<HeapObject> next); + + DECL_CAST(CachedTemplateObject) + + static constexpr int kSlotIdOffset = kValue1Offset; + static constexpr int kTemplateObjectOffset = kValue2Offset; + static constexpr int kNextOffset = kValue3Offset; + + OBJECT_CONSTRUCTORS(CachedTemplateObject, Tuple3); +}; + +// TemplateObjectDescription is a tuple of raw strings and cooked strings for +// tagged template literals. Used to communicate with the runtime for template +// object creation within the {Runtime_GetTemplateObject} method. class TemplateObjectDescription final : public Tuple2 { public: DECL_ACCESSORS(raw_strings, FixedArray) DECL_ACCESSORS(cooked_strings, FixedArray) - static Handle<JSArray> CreateTemplateObject( - Isolate* isolate, Handle<TemplateObjectDescription> description); + static Handle<JSArray> GetTemplateObject( + Isolate* isolate, Handle<Context> native_context, + Handle<TemplateObjectDescription> description, + Handle<SharedFunctionInfo> shared_info, int slot_id); DECL_CAST(TemplateObjectDescription) |