#ifndef V8_EXECUTION_ISOLATE_DATA_H_
#define V8_EXECUTION_ISOLATE_DATA_H_
#include "src/builtins/builtins.h"
#include "src/codegen/constants-arch.h"
#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/init/isolate-group.h"
#include "src/roots/roots.h"
#include "src/sandbox/code-pointer-table.h"
#include "src/sandbox/cppheap-pointer-table.h"
#include "src/sandbox/external-pointer-table.h"
#include "src/sandbox/trusted-pointer-table.h"
#include "src/utils/utils.h"
#include "testing/gtest/include/gtest/gtest_prod.h"
namespace v8 {
namespace internal {
class Isolate;
#if V8_HOST_ARCH_64_BIT
#define ISOLATE_DATA_FAST_C_CALL_PADDING(V) …
#else
#define ISOLATE_DATA_FAST_C_CALL_PADDING …
#endif
#ifdef V8_ENABLE_LEAPTIERING
#define BUILTINS_WITH_DISPATCH_ADAPTER …
#define BUILTINS_WITH_DISPATCH_LIST …
struct JSBuiltinDispatchHandleRoot {
enum Idx {
#define CASE …
BUILTINS_WITH_DISPATCH_LIST(CASE)
kCount,
kFirst = 0
#undef CASE
};
static inline Builtin to_builtin(Idx idx) {
#define CASE …
return std::array<Builtin, Idx::kCount>{
BUILTINS_WITH_DISPATCH_LIST(CASE)}[idx];
#undef CASE
}
static inline Idx to_idx(Builtin builtin) {
switch (builtin) {
#define CASE …
BUILTINS_WITH_DISPATCH_LIST(CASE)
#undef CASE
default:
UNREACHABLE();
}
}
static inline Idx to_idx(RootIndex root_idx) {
switch (root_idx) {
#define CASE …
BUILTINS_WITH_DISPATCH_LIST(CASE)
#undef CASE
default:
UNREACHABLE();
}
}
};
#endif
#define ISOLATE_DATA_FIELDS(V) …
#ifdef V8_COMPRESS_POINTERS
#define ISOLATE_DATA_FIELDS_POINTER_COMPRESSION(V) …
#else
#define ISOLATE_DATA_FIELDS_POINTER_COMPRESSION …
#endif
#ifdef V8_ENABLE_SANDBOX
#define ISOLATE_DATA_FIELDS_SANDBOX(V) …
#else
#define ISOLATE_DATA_FIELDS_SANDBOX …
#endif
#define EXTERNAL_REFERENCE_LIST_ISOLATE_FIELDS(V) …
constexpr uint8_t kNumIsolateFieldIds = …;
#undef PLUS_1
enum class IsolateFieldId : uint8_t { … };
class IsolateData final { … };
void IsolateData::AssertPredictableLayout() { … }
}
}
#endif