5#ifndef V8_SANDBOX_INDIRECT_POINTER_INL_H_
6#define V8_SANDBOX_INDIRECT_POINTER_INL_H_
24#ifdef V8_ENABLE_SANDBOX
30 if (tag == kCodeIndirectPointerTag) {
31 CodePointerTable::Space* space =
32 isolate.GetCodePointerTableSpaceFor(field_address);
35 ->code_pointer_table()
39 TrustedPointerTable::Space* space =
40 isolate.GetTrustedPointerTableSpaceFor(tag);
41 handle = isolate.GetTrustedPointerTableFor(tag).AllocateAndInitializeEntry(
42 space, host.
ptr(), tag, opt_publishing_scope);
56#ifdef V8_ENABLE_SANDBOX
57template <IndirectPo
interTag tag>
60 const TrustedPointerTable& table = isolate.GetTrustedPointerTableFor(tag);
72template <IndirectPo
interTag tag>
76#ifdef V8_ENABLE_SANDBOX
88 return ResolveCodePointerHandle(
handle);
94 return ResolveTrustedPointerHandle<tag>(
handle, isolate);
96 }
else if constexpr (tag == kCodeIndirectPointerTag) {
97 return ResolveCodePointerHandle(
handle);
99 return ResolveTrustedPointerHandle<tag>(
handle, isolate);
106template <IndirectPo
interTag tag>
110#ifdef V8_ENABLE_SANDBOX
static void Release_Store(T *addr, typename std::remove_reference< T >::type new_value)
static T Acquire_Load(T *addr)
static IsolateGroup * current()
V8_INLINE constexpr StorageType ptr() const
V8_INLINE IndirectHandle< T > handle(Tagged< T > object, Isolate *isolate)
V8_INLINE void WriteIndirectPointerField(Address field_address, Tagged< ExposedTrustedObject > value, ReleaseStoreTag)
V8_INLINE Tagged< Object > ReadIndirectPointerField(Address field_address, IsolateForSandbox isolate, AcquireLoadTag)
@ kIndirectPointerNullTag
@ kUnknownIndirectPointerTag
@ kDefaultCodeEntrypointTag
uint32_t IndirectPointerHandle
V8_INLINE void InitSelfIndirectPointerField(Address field_address, IsolateForSandbox isolate, Tagged< HeapObject > host, IndirectPointerTag tag, TrustedPointerPublishingScope *opt_publishing_scope)
constexpr IndirectPointerHandle kNullIndirectPointerHandle
static constexpr Address kNullAddress
constexpr uint32_t kCodePointerHandleMarker
#define DCHECK_NE(v1, v2)