5#ifndef V8_HEAP_MUTABLE_PAGE_METADATA_H_
6#define V8_HEAP_MUTABLE_PAGE_METADATA_H_
24class FreeListCategory;
119 template <RememberedSetType type, AccessMode access_mode = AccessMode::ATOMIC>
126 template <RememberedSetType type, AccessMode access_mode = AccessMode::ATOMIC>
132 template <RememberedSetType type, AccessMode access_mode = AccessMode::ATOMIC>
139 template <RememberedSetType type, AccessMode access_mode = AccessMode::ATOMIC>
145 template <RememberedSetType type>
158 template <RememberedSetType type>
169 template <RememberedSetType type>
272 template <AccessMode mode = AccessMode::NON_ATOMIC>
289 template <RememberedSetType type, AccessMode access_mode = AccessMode::ATOMIC>
298 template <RememberedSetType type, AccessMode access_mode = AccessMode::ATOMIC>
371 sizeof(
void*) * remembered_set_type;
378 template <RememberedSetType>
396struct hash<
i::MutablePageMetadata*> :
hash<i::MemoryChunkMetadata*> {};
398struct hash<const
i::MutablePageMetadata*>
399 :
hash<const i::MemoryChunkMetadata*> {};
constexpr int kRegularPageSize
#define SBXCHECK(condition)
static constexpr size_t BucketsForSize(size_t size)
static void Release_Store(T *addr, typename std::remove_reference< T >::type new_value)
static T Acquire_Load(T *addr)
void SetYoungGenerationPageFlags(MarkingMode marking_mode)
void set_typed_slot_set(TypedSlotSet *typed_slot_set)
void IncrementLiveBytesAtomically(intptr_t diff)
void ReleaseTypedSlotSet(RememberedSetType type)
void set_slot_set(SlotSet *slot_set)
size_t live_bytes() const
const TypedSlotSet * typed_slot_set() const
void DecrementExternalBackingStoreBytes(ExternalBackingStoreType type, size_t amount)
void SetLiveBytes(size_t value)
static PageAllocator::Permission GetCodeModificationPermission()
size_t AgeInNewSpace() const
bool ContainsAnySlots() const
static V8_INLINE MutablePageMetadata * FromAddress(Address a)
TypedSlotSet * typed_slot_set()
MemoryChunk::MainThreadFlags InitialFlags(Executability executable) const
heap::ListNode< MutablePageMetadata > list_node_
void ResetAllocationStatisticsForPromotedPage()
size_t ExternalBackingStoreBytes(ExternalBackingStoreType type) const
MarkingBitmap * marking_bitmap()
size_t BucketsInSlotSet() const
MarkingProgressTracker & marking_progress_tracker()
TypedSlotSet * AllocateTypedSlotSet(RememberedSetType type)
const base::Mutex & mutex() const
base::Mutex & object_mutex()
V8_EXPORT_PRIVATE SlotSet * AllocateSlotSet(RememberedSetType type)
PossiblyEmptyBuckets * possibly_empty_buckets()
static MutablePageMetadata * cast(MemoryChunkMetadata *metadata)
static constexpr intptr_t MarkingBitmapOffset()
bool IsLivenessClear() const
std::atomic< intptr_t > live_byte_count_
size_t allocated_lab_size_
void IncrementAgeInNewSpace()
std::atomic< size_t > external_backing_store_bytes_[static_cast< int >(ExternalBackingStoreType::kNumValues)]
void IncrementExternalBackingStoreBytes(ExternalBackingStoreType type, size_t amount)
void IncreaseAllocatedLabSize(size_t bytes)
ConcurrentSweepingState concurrent_sweeping_state()
size_t AllocatedLabSize() const
void ReleaseAllocatedMemoryNeededForWritableChunk()
TypedSlotSet * ExtractTypedSlotSet()
static const int kPageSize
const MarkingProgressTracker & marking_progress_tracker() const
void set_concurrent_sweeping_state(ConcurrentSweepingState state)
AllocationSpace owner_identity() const
V8_EXPORT_PRIVATE size_t CommittedPhysicalMemory() const
static void MoveExternalBackingStoreBytes(ExternalBackingStoreType type, MutablePageMetadata *from, MutablePageMetadata *to, size_t amount)
void ResetAllocationStatistics()
MarkingProgressTracker marking_progress_tracker_
bool SweepingDone() const
const SlotSet * slot_set() const
MarkingBitmap marking_bitmap_
std::atomic< ConcurrentSweepingState > concurrent_sweeping_
void SetYoungGenerationPageFlags(MarkingMode marking_mode)
void ReleaseSlotSet(RememberedSetType type)
MutablePageMetadata(Heap *heap, BaseSpace *space, size_t size, Address area_start, Address area_end, VirtualMemory reservation, PageSize page_size)
void ReleaseAllAllocatedMemory()
static const MutablePageMetadata * cast(const MemoryChunkMetadata *metadata)
static constexpr intptr_t SlotSetOffset(RememberedSetType remembered_set_type)
void DecreaseAllocatedLabSize(size_t bytes)
const MarkingBitmap * marking_bitmap() const
friend class TestWithBitmap
const heap::ListNode< MutablePageMetadata > & list_node() const
std::unique_ptr< ActiveSystemPages > active_system_pages_
heap::ListNode< MutablePageMetadata > & list_node()
SlotSet * slot_set_[NUMBER_OF_REMEMBERED_SET_TYPES]
V8_INLINE void SetOldGenerationPageFlags(MarkingMode marking_mode)
SlotSet * ExtractSlotSet()
TypedSlotSet * typed_slot_set_[NUMBER_OF_REMEMBERED_SET_TYPES]
bool ContainsSlots() const
const base::Mutex & object_mutex() const
void ResetAgeInNewSpace()
PossiblyEmptyBuckets possibly_empty_buckets_
base::Mutex object_mutex_
static V8_INLINE MutablePageMetadata * FromHeapObject(Tagged< HeapObject > o)
int ComputeFreeListsLength()
FreeListCategory ** categories_
#define V8_COMPRESS_POINTERS_8GB_BOOL
LiftoffAssembler::CacheState state
constexpr intptr_t kObjectAlignment8GbHeap
V8_EXPORT_PRIVATE FlagValues v8_flags
@ NUMBER_OF_REMEMBERED_SET_TYPES
@ SURVIVOR_TO_EXTERNAL_POINTER
@ TRUSTED_TO_SHARED_TRUSTED
#define DCHECK_IMPLIES(v1, v2)
#define DCHECK_NE(v1, v2)
#define DCHECK_GE(v1, v2)
#define DCHECK(condition)
#define V8_EXPORT_PRIVATE
constexpr bool IsAligned(T value, U alignment)