summaryrefslogtreecommitdiff
path: root/deps/v8/src/objects/template-objects.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/objects/template-objects.h')
-rw-r--r--deps/v8/src/objects/template-objects.h38
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)