5#ifndef V8_BASE_REGION_ALLOCATOR_H_
6#define V8_BASE_REGION_ALLOCATOR_H_
12#include "testing/gtest/include/gtest/gtest_prod.h"
71 Address AllocateRegion(
size_t size);
84 bool AllocateRegionAt(
Address requested_address,
size_t size,
85 RegionState region_state = RegionState::kAllocated);
90 Address AllocateAlignedRegion(
size_t size,
size_t alignment);
95 Address AllocateRegion(
Address hint,
size_t size,
size_t alignment);
106 size_t TrimRegion(
Address address,
size_t new_size);
110 size_t CheckRegion(
Address address);
113 bool IsFree(
Address address,
size_t size);
117 size_t size()
const {
return whole_region_.size(); }
120 return whole_region_.contains(address);
124 return whole_region_.contains(address, size);
134 void Print(std::ostream& os)
const;
149 void Print(std::ostream& os)
const;
173 return a->end() < b->
end();
182 if (a->size() != b->
size())
return a->size() < b->
size();
183 return a->begin() < b->
begin();
194 AllRegionsSet::iterator FindRegion(
Address address);
197 void FreeListAddRegion(
Region* region);
200 Region* FreeListFindRegion(
size_t size);
203 void FreeListRemoveRegion(
Region* region);
210 void Merge(AllRegionsSet::iterator prev_iter,
211 AllRegionsSet::iterator next_iter);
Region(Address address, size_t size, RegionState state)
void set_state(RegionState state)
bool is_allocated() const
RegionAllocator(const RegionAllocator &)=delete
FRIEND_TEST(RegionAllocatorTest, Fragmentation)
FRIEND_TEST(RegionAllocatorTest, Contains)
AllRegionsSet all_regions_
FRIEND_TEST(RegionAllocatorTest, FindRegion)
RegionAllocator & operator=(const RegionAllocator &)=delete
const Region whole_region_
FRIEND_TEST(RegionAllocatorTest, AllocateRegionRandom)
const size_t region_size_in_pages_
bool contains(Address address) const
void set_on_split_callback(SplitMergeCallback callback)
const size_t max_load_for_randomization_
SplitMergeCallback on_split_
std::set< Region *, AddressEndOrder > AllRegionsSet
SplitMergeCallback on_merge_
void set_on_merge_callback(SplitMergeCallback callback)
FRIEND_TEST(RegionAllocatorTest, AllocateExcluded)
bool contains(Address address, size_t size) const
std::function< void(Address start, size_t size)> SplitMergeCallback
size_t FreeRegion(Address address)
std::set< Region *, SizeAddressOrder > free_regions_
enum v8::internal::@1270::DeoptimizableCodeIterator::@67 state_
LiftoffAssembler::CacheState state
bool operator()(const Region *a, const Region *b) const
bool operator()(const Region *a, const Region *b) const