44    : main_thread_flags_(flags)
 
   45#ifndef V8_ENABLE_SANDBOX
 
   50#ifdef V8_ENABLE_SANDBOX 
   51  auto metadata_index = MetadataTableIndex(
address());
 
   54                 metadata_pointer_table[metadata_index] == metadata);
 
   55  metadata_pointer_table[metadata_index] = metadata;
 
   56  metadata_index_ = metadata_index;
 
 
   60#ifdef V8_ENABLE_SANDBOX 
   63  uint32_t metadata_index = MetadataTableIndex(metadata->
ChunkAddress());
 
   65  DCHECK_EQ(metadata_pointer_table[metadata_index], metadata);
 
   66  metadata_pointer_table[metadata_index] = 
nullptr;
 
   70uint32_t MemoryChunk::MetadataTableIndex(
Address chunk_address) {
 
   74    static_assert(kPtrComprCageReservationSize == kPtrComprCageBaseAlignment);
 
   77    index = MemoryChunkConstants::kMainCageMetadataOffset +
 
   79  } 
else if (TrustedRange::GetProcessWideTrustedRange()->region().contains(
 
   83              MemoryChunkConstants::kPagesInTrustedCage);
 
   84    index = MemoryChunkConstants::kTrustedSpaceMetadataOffset +
 
   88    DCHECK(code_range->region().contains(chunk_address));
 
   89    uint32_t 
offset = 
static_cast<uint32_t
>(chunk_address - code_range->base());
 
   91    index = MemoryChunkConstants::kCodeRangeMetadataOffset +
 
   94  DCHECK_LT(index, MemoryChunkConstants::kMetadataPointerTableSize);
 
  103#ifdef THREAD_SANITIZER 
  108  Metadata()->SynchronizedHeapStore();
 
  109#ifndef V8_ENABLE_SANDBOX 
  114  static_assert(
sizeof(
base::AtomicWord) == 
sizeof(metadata_pointer_table[0]));
 
  117                          &metadata_pointer_table[metadata_index_]),
 
  119                          metadata_pointer_table[metadata_index_]));
 
 
  126#ifdef THREAD_SANITIZER 
  128void MemoryChunk::SynchronizedLoad()
 const {
 
  129#ifndef V8_ENABLE_SANDBOX 
  135  static_assert(
sizeof(
base::AtomicWord) == 
sizeof(metadata_pointer_table[0]));
 
  137  uint32_t metadata_index =
 
  139          &(
const_cast<MemoryChunk*
>(
this)->metadata_index_)));
 
  142          &metadata_pointer_table[metadata_index])));
 
  144  metadata->SynchronizedHeapLoad();
 
  274#ifdef V8_ENABLE_SANDBOX 
  275bool MemoryChunk::SandboxSafeInReadOnlySpace()
 const {
 
  289  MemoryChunkMetadata** metadata_pointer_table = MetadataTableAddress();
 
  290  MemoryChunkMetadata* metadata = metadata_pointer_table
 
  291      [metadata_index_ & MemoryChunkConstants::kMetadataPointerTableSizeMask];
 
  293      static_cast<const ReadOnlyPageMetadata*
>(metadata)->ChunkAddress(),
 
constexpr int kPageSizeBits
#define SBXCHECK_EQ(lhs, rhs)
AllocationSpace identity() const
static IsolateGroup * current()
CodeRange * GetCodeRange() const
void ClearFlagSlow(Flag flag)
static constexpr MainThreadFlags kAllFlagsMask
static constexpr MainThreadFlags kPointersToHereAreInterestingMask
void SetOldGenerationPageFlags(MarkingMode marking_mode, AllocationSpace space)
void InitializationMemoryFence()
@ POINTERS_FROM_HERE_ARE_INTERESTING
@ IS_MAJOR_GC_IN_PROGRESS
@ POINTERS_TO_HERE_ARE_INTERESTING
V8_INLINE void SetFlagNonExecutable(Flag flag)
V8_INLINE void SetFlagUnlocked(Flag flag)
size_t OffsetMaybeOutOfRange(Address addr) const
static MainThreadFlags OldGenerationPageFlags(MarkingMode marking_mode, AllocationSpace space)
static constexpr MainThreadFlags kIsInYoungGenerationMask
Executability executable() const
V8_INLINE bool IsFlagSet(Flag flag) const
V8_INLINE Address address() const
V8_INLINE void SetFlagsNonExecutable(MainThreadFlags flags, MainThreadFlags mask=kAllFlagsMask)
V8_INLINE MemoryChunkMetadata * Metadata()
static constexpr MainThreadFlags kPointersFromHereAreInterestingMask
V8_INLINE void ClearFlagUnlocked(Flag flag)
V8_INLINE void SetFlagsUnlocked(MainThreadFlags flags, MainThreadFlags mask=kAllFlagsMask)
size_t Offset(Address addr) const
void SetFlagSlow(Flag flag)
base::Flags< Flag, uintptr_t > MainThreadFlags
V8_INLINE void ClearFlagsNonExecutable(MainThreadFlags flags)
V8_INLINE void ClearFlagNonExecutable(Flag flag)
static MainThreadFlags YoungGenerationPageFlags(MarkingMode marking_mode)
MemoryChunk(MainThreadFlags flags, MemoryChunkMetadata *metadata)
static constexpr MainThreadFlags kIsLargePageMask
V8_INLINE bool InReadOnlySpace() const
MemoryChunkMetadata * metadata_
static constexpr MainThreadFlags kSkipEvacuationSlotsRecordingMask
V8_INLINE void ClearFlagsUnlocked(MainThreadFlags flags)
void SetYoungGenerationPageFlags(MarkingMode marking_mode)
static constexpr MainThreadFlags kEvacuationCandidateMask
static V8_INLINE constexpr Tagged_t CompressAny(Address tagged)
V8_CONST static V8_INLINE Address base()
static V8_INLINE constexpr Address GetPtrComprCageBaseAddress(Address on_heap_addr)
Atomic8 Acquire_Load(volatile const Atomic8 *ptr)
void SeqCst_MemoryFence()
void Release_Store(volatile Atomic8 *ptr, Atomic8 value)
constexpr bool IsAnyCodeSpace(AllocationSpace space)
constexpr bool IsAnyTrustedSpace(AllocationSpace space)
V8_EXPORT_PRIVATE FlagValues v8_flags
const uint32_t kClearedWeakHeapObjectLower32
constexpr bool IsAnySharedSpace(AllocationSpace space)
#define DCHECK_LE(v1, v2)
#define DCHECK_IMPLIES(v1, v2)
#define DCHECK_GE(v1, v2)
#define DCHECK(condition)
#define DCHECK_LT(v1, v2)
#define DCHECK_EQ(v1, v2)