5#ifndef INCLUDE_V8_SANDBOX_H_
6#define INCLUDE_V8_SANDBOX_H_
90 uint32_t actual_tag =
static_cast<uint16_t
>(entry);
95 uint32_t first_tag =
static_cast<uint32_t
>(
lower_bound) << kTagShift;
96 uint32_t last_tag = (
static_cast<uint32_t
>(
upper_bound) << kTagShift) + 1;
97 return actual_tag >= first_tag && actual_tag <= last_tag;
116#ifdef V8_COMPRESS_POINTERS
119 Internals::kIsolateCppHeapPointerTableOffset +
121 return *
reinterpret_cast<Address**
>(addr);
129#ifdef V8_COMPRESS_POINTERS
134 const uint32_t index =
handle >> kExternalPointerIndexShift;
135 const Address* table = GetCppHeapPointerTableBase(isolate);
136 const std::atomic<Address>* ptr =
137 reinterpret_cast<const std::atomic<Address>*
>(&table[
index]);
138 Address entry = std::atomic_load_explicit(ptr, std::memory_order_relaxed);
163 return reinterpret_cast<T*
>(pointer);
165 return reinterpret_cast<T*
>(
static V8_EXPORT void InitializeBeforeThreadCreation()
static V8_INLINE T ReadRawField(Address heap_object_ptr, int offset)
static const int kExternalPointerTableBasePointerOffset
V8_INLINE IndirectHandle< T > handle(Tagged< T > object, Isolate *isolate)
V8_INLINE Address ReadCppHeapPointerField(Address field_address, IsolateForPointerCompression isolate)
constexpr uint64_t kCppHeapPointerPayloadShift
constexpr uint64_t kCppHeapPointerTagShift
uint32_t CppHeapPointerHandle
constexpr CppHeapPointerTagRange kAnyCppHeapPointer(CppHeapPointerTag::kFirstTag, CppHeapPointerTag::kLastTag)
constexpr CppHeapPointerTagRange(CppHeapPointerTag lower, CppHeapPointerTag upper)
bool CheckTagOf(uint64_t entry)
CppHeapPointerTag lower_bound
CppHeapPointerTag upper_bound
#define V8_LIKELY(condition)