1 // Copyright (c) 2018 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef THIRD_PARTY_BASE_ALLOCATOR_PARTITION_ALLOCATOR_PARTITION_DIRECT_MAP_EXTENT_H_ 6 #define THIRD_PARTY_BASE_ALLOCATOR_PARTITION_ALLOCATOR_PARTITION_DIRECT_MAP_EXTENT_H_ 7 8 #include "third_party/base/allocator/partition_allocator/partition_bucket.h" 9 #include "third_party/base/allocator/partition_allocator/partition_page.h" 10 11 namespace pdfium { 12 namespace base { 13 namespace internal { 14 15 struct PartitionDirectMapExtent { 16 PartitionDirectMapExtent* next_extent; 17 PartitionDirectMapExtent* prev_extent; 18 PartitionBucket* bucket; 19 size_t map_size; // Mapped size, not including guard pages and meta-data. 20 21 ALWAYS_INLINE static PartitionDirectMapExtent* FromPage(PartitionPage* page); 22 }; 23 FromPage(PartitionPage * page)24ALWAYS_INLINE PartitionDirectMapExtent* PartitionDirectMapExtent::FromPage( 25 PartitionPage* page) { 26 DCHECK(page->bucket->is_direct_mapped()); 27 return reinterpret_cast<PartitionDirectMapExtent*>( 28 reinterpret_cast<char*>(page) + 3 * kPageMetadataSize); 29 } 30 31 } // namespace internal 32 } // namespace base 33 } // namespace pdfium 34 35 #endif // THIRD_PARTY_BASE_ALLOCATOR_PARTITION_ALLOCATOR_PARTITION_DIRECT_MAP_EXTENT_H_ 36