5#ifndef V8_HEAP_PAGED_SPACES_INL_H_
6#define V8_HEAP_PAGED_SPACES_INL_H_
23 : cage_base_(page->
heap()->isolate()),
32 AdvanceToNextObject();
49 if (IsFreeSpaceOrFiller(obj, cage_base())) {
52 if (IsInstructionStream(obj, cage_base())) {
74 }
while (AdvanceToNextPage());
87template <
bool during_sweep>
89 if (size_in_bytes == 0)
return 0;
94 heap()->CreateFillerObjectAtBackground(free_space);
100 heap()->CreateFillerObjectAtBackground(free_space);
105 if constexpr (!during_sweep) {
107 accounting_stats_.DecreaseAllocatedBytes(size_in_bytes, page);
108 free_list()->increase_wasted_bytes(wasted);
112 return size_in_bytes - wasted;
116 return FreeInternal<
false>(
start, size_in_bytes);
120 return FreeInternal<
true>(
start, size_in_bytes);
void AdvanceToNextObject()
const PageMetadata *const page_
static Tagged< HeapObject > FromAddress(Address address)
static V8_INLINE PageMetadata * FromHeapObject(Tagged< HeapObject > o)
static V8_INLINE PageMetadata * FromAddress(Address addr)
V8_INLINE size_t Free(Address start, size_t size_in_bytes)
V8_INLINE size_t FreeInternal(Address start, size_t size_in_bytes)
bool Contains(Address a) const
V8_INLINE size_t FreeDuringSweep(Address start, size_t size_in_bytes)
Tagged< HeapObject > Next() override
V8_INLINE constexpr StorageType ptr() const
static V8_INLINE WritableFreeSpace ForNonExecutableMemory(base::Address addr, size_t size)
V8_INLINE WritableFreeSpace FreeRange(Address addr, size_t size)
#define ALIGN_TO_ALLOCATION_ALIGNMENT(value)
const v8::base::TimeTicks end_
kInterpreterTrampolineOffset Tagged< HeapObject >
V8_INLINE constexpr bool IsHeapObject(TaggedImpl< kRefType, StorageType > obj)
static constexpr Address kNullAddress
#define DCHECK_CODEOBJECT_SIZE(size)
#define DCHECK_OBJECT_SIZE(size)
#define DCHECK_LE(v1, v2)
#define DCHECK_NE(v1, v2)
#define DCHECK_GE(v1, v2)
#define DCHECK_LT(v1, v2)
#define DCHECK_EQ(v1, v2)
#define DCHECK_GT(v1, v2)