diff options
Diffstat (limited to 'deps/v8/src/execution/isolate-data.h')
-rw-r--r-- | deps/v8/src/execution/isolate-data.h | 39 |
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_; |