#include "partition_alloc/partition_page.h"
#include <algorithm>
#include <cstdint>
#include "partition_alloc/address_pool_manager.h"
#include "partition_alloc/buildflags.h"
#include "partition_alloc/freeslot_bitmap.h"
#include "partition_alloc/page_allocator.h"
#include "partition_alloc/page_allocator_constants.h"
#include "partition_alloc/partition_address_space.h"
#include "partition_alloc/partition_alloc_base/bits.h"
#include "partition_alloc/partition_alloc_base/compiler_specific.h"
#include "partition_alloc/partition_alloc_check.h"
#include "partition_alloc/partition_alloc_constants.h"
#include "partition_alloc/partition_alloc_forward.h"
#include "partition_alloc/partition_direct_map_extent.h"
#include "partition_alloc/partition_freelist_entry.h"
#include "partition_alloc/partition_root.h"
#include "partition_alloc/reservation_offset_table.h"
#include "partition_alloc/tagging.h"
namespace partition_alloc::internal {
namespace {
void UnmapNow(uintptr_t reservation_start,
size_t reservation_size,
pool_handle pool);
PA_ALWAYS_INLINE void PartitionDirectUnmap(SlotSpanMetadata* slot_span) { … }
}
PA_ALWAYS_INLINE void SlotSpanMetadata::RegisterEmpty() { … }
const SlotSpanMetadata SlotSpanMetadata::sentinel_slot_span_;
const SlotSpanMetadata* SlotSpanMetadata::get_sentinel_slot_span() { … }
SlotSpanMetadata* SlotSpanMetadata::get_sentinel_slot_span_non_const() { … }
SlotSpanMetadata::SlotSpanMetadata(PartitionBucket* bucket)
: … { … }
void SlotSpanMetadata::FreeSlowPath(size_t number_of_freed) { … }
void SlotSpanMetadata::Decommit(PartitionRoot* root) { … }
void SlotSpanMetadata::DecommitIfPossible(PartitionRoot* root) { … }
void SlotSpanMetadata::SortFreelist() { … }
void SlotSpanMetadata::IncrementNumberOfNonemptySlotSpans() { … }
namespace {
void UnmapNow(uintptr_t reservation_start,
size_t reservation_size,
pool_handle pool) { … }
}
}