summaryrefslogtreecommitdiff
path: root/deps/v8/src/execution/isolate-data.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/execution/isolate-data.h')
-rw-r--r--deps/v8/src/execution/isolate-data.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/deps/v8/src/execution/isolate-data.h b/deps/v8/src/execution/isolate-data.h
index d0e5aa87d5..ca514657de 100644
--- a/deps/v8/src/execution/isolate-data.h
+++ b/deps/v8/src/execution/isolate-data.h
@@ -10,6 +10,7 @@
#include "src/codegen/external-reference-table.h"
#include "src/execution/stack-guard.h"
#include "src/execution/thread-local-top.h"
+#include "src/heap/linear-allocation-area.h"
#include "src/roots/roots.h"
#include "src/security/external-pointer-table.h"
#include "src/utils/utils.h"
@@ -48,9 +49,22 @@ class Isolate;
builtin_entry_table) \
V(kBuiltinTableOffset, Builtins::kBuiltinCount* kSystemPointerSize, \
builtin_table) \
+ /* Linear allocation areas for the heap's new and old space */ \
+ V(kNewAllocationInfo, LinearAllocationArea::kSize, new_allocation_info) \
+ V(kOldAllocationInfo, LinearAllocationArea::kSize, old_allocation_info) \
+ ISOLATE_DATA_FIELDS_EXTERNAL_CODE_SPACE(V) \
ISOLATE_DATA_FIELDS_HEAP_SANDBOX(V) \
V(kStackIsIterableOffset, kUInt8Size, stack_is_iterable)
+#ifdef V8_EXTERNAL_CODE_SPACE
+#define ISOLATE_DATA_FIELDS_EXTERNAL_CODE_SPACE(V) \
+ V(kBuiltinCodeDataContainerTableOffset, \
+ Builtins::kBuiltinCount* kSystemPointerSize, \
+ builtin_code_data_container_table)
+#else
+#define ISOLATE_DATA_FIELDS_EXTERNAL_CODE_SPACE(V)
+#endif // V8_EXTERNAL_CODE_SPACE
+
#ifdef V8_HEAP_SANDBOX
#define ISOLATE_DATA_FIELDS_HEAP_SANDBOX(V) \
V(kExternalPointerTableOffset, kSystemPointerSize * 3, external_pointer_table)
@@ -104,6 +118,17 @@ class IsolateData final {
Builtins::ToInt(id) * kSystemPointerSize;
}
+ static int BuiltinCodeDataContainerSlotOffset(Builtin id) {
+#ifdef V8_EXTERNAL_CODE_SPACE
+ // TODO(v8:11880): implement table tiering once the builtin table containing
+ // Code objects is no longer used.
+ return builtin_code_data_container_table_offset() +
+ Builtins::ToInt(id) * kSystemPointerSize;
+#else
+ UNREACHABLE();
+#endif // V8_EXTERNAL_CODE_SPACE
+ }
+
#define V(Offset, Size, Name) \
Address Name##_address() { return reinterpret_cast<Address>(&Name##_); }
ISOLATE_DATA_FIELDS(V)
@@ -126,6 +151,13 @@ class IsolateData final {
ThreadLocalTop const& thread_local_top() const { return thread_local_top_; }
Address* builtin_entry_table() { return builtin_entry_table_; }
Address* builtin_table() { return builtin_table_; }
+ Address* builtin_code_data_container_table() {
+#ifdef V8_EXTERNAL_CODE_SPACE
+ return builtin_code_data_container_table_;
+#else
+ UNREACHABLE();
+#endif
+ }
uint8_t stack_is_iterable() const { return stack_is_iterable_; }
// Returns true if this address points to data stored in this instance. If
@@ -201,6 +233,13 @@ class IsolateData final {
// The entries in this array are tagged pointers to Code objects.
Address builtin_table_[Builtins::kBuiltinCount] = {};
+ LinearAllocationArea new_allocation_info_;
+ LinearAllocationArea old_allocation_info_;
+
+#ifdef V8_EXTERNAL_CODE_SPACE
+ Address builtin_code_data_container_table_[Builtins::kBuiltinCount] = {};
+#endif
+
// Table containing pointers to external objects.
#ifdef V8_HEAP_SANDBOX
ExternalPointerTable external_pointer_table_;