Home | History | Annotate | Download | only in allocator

Lines Matching defs:RosAlloc

41 class RosAlloc {
51 size_t ByteSize(RosAlloc* rosalloc) const EXCLUSIVE_LOCKS_REQUIRED(rosalloc->lock_) {
53 size_t pm_idx = rosalloc->ToPageMapIndex(fpr_base);
54 size_t byte_size = rosalloc->free_page_run_size_map_[pm_idx];
59 void SetByteSize(RosAlloc* rosalloc, size_t byte_size)
60 EXCLUSIVE_LOCKS_REQUIRED(rosalloc->lock_) {
63 size_t pm_idx = rosalloc->ToPageMapIndex(fpr_base);
64 rosalloc->free_page_run_size_map_[pm_idx] = byte_size;
69 void* End(RosAlloc* rosalloc) EXCLUSIVE_LOCKS_REQUIRED(rosalloc->lock_) {
71 byte* end = fpr_base + ByteSize(rosalloc);
74 bool IsLargerThanPageReleaseThreshold(RosAlloc* rosalloc)
75 EXCLUSIVE_LOCKS_REQUIRED(rosalloc->lock_) {
76 return ByteSize(rosalloc) >= rosalloc->page_release_size_threshold_;
78 bool IsAtEndOfSpace(RosAlloc* rosalloc)
79 EXCLUSIVE_LOCKS_REQUIRED(rosalloc->lock_) {
80 return reinterpret_cast<byte*>(this) + ByteSize(rosalloc) == rosalloc->base_ + rosalloc->footprint_;
82 bool ShouldReleasePages(RosAlloc* rosalloc) EXCLUSIVE_LOCKS_REQUIRED(rosalloc->lock_) {
83 switch (rosalloc->page_release_mode_) {
87 return IsAtEndOfSpace(rosalloc);
89 return IsLargerThanPageReleaseThreshold(rosalloc);
91 return IsLargerThanPageReleaseThreshold(rosalloc) && IsAtEndOfSpace(rosalloc);
99 void ReleasePages(RosAlloc* rosalloc) EXCLUSIVE_LOCKS_REQUIRED(rosalloc->lock_) {
101 size_t byte_size = ByteSize(rosalloc);
103 if (ShouldReleasePages(rosalloc)) {
104 rosalloc->ReleasePageRange(start, start + byte_size);
248 void Verify(Thread* self, RosAlloc* rosalloc)
379 size_t operator()(const RosAlloc::Run* r) const {
385 bool operator()(const RosAlloc::Run* r1, const RosAlloc::Run* r2) const {
526 RosAlloc(void* base, size_t capacity, size_t max_capacity,
529 ~RosAlloc();