| // Copyright (c) 2018 The Chromium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef BASE_ALLOCATOR_PARTITION_ALLOCATOR_PARTITION_DIRECT_MAP_EXTENT_H_ | |
| #define BASE_ALLOCATOR_PARTITION_ALLOCATOR_PARTITION_DIRECT_MAP_EXTENT_H_ | |
| #include "base/allocator/partition_allocator/partition_bucket.h" | |
| #include "base/allocator/partition_allocator/partition_page.h" | |
| namespace base { | |
| namespace internal { | |
| struct PartitionDirectMapExtent { | |
| PartitionDirectMapExtent* next_extent; | |
| PartitionDirectMapExtent* prev_extent; | |
| PartitionBucket* bucket; | |
| size_t map_size; // Mapped size, not including guard pages and meta-data. | |
| ALWAYS_INLINE static PartitionDirectMapExtent* FromPage(PartitionPage* page); | |
| }; | |
| ALWAYS_INLINE PartitionDirectMapExtent* PartitionDirectMapExtent::FromPage( | |
| PartitionPage* page) { | |
| DCHECK(page->bucket->is_direct_mapped()); | |
| return reinterpret_cast<PartitionDirectMapExtent*>( | |
| reinterpret_cast<char*>(page) + 3 * kPageMetadataSize); | |
| } | |
| } // namespace internal | |
| } // namespace base | |
| #endif // BASE_ALLOCATOR_PARTITION_ALLOCATOR_PARTITION_DIRECT_MAP_EXTENT_H_ |