diff options
Diffstat (limited to 'runtime/gc')
-rw-r--r-- | runtime/gc/collector_type.h | 13 | ||||
-rw-r--r-- | runtime/gc/heap.cc | 4 | ||||
-rw-r--r-- | runtime/gc/heap.h | 11 | ||||
-rw-r--r-- | runtime/gc/space/large_object_space.h | 8 |
4 files changed, 24 insertions, 12 deletions
diff --git a/runtime/gc/collector_type.h b/runtime/gc/collector_type.h index ef5d56e..9275e6d 100644 --- a/runtime/gc/collector_type.h +++ b/runtime/gc/collector_type.h @@ -46,6 +46,19 @@ enum CollectorType { }; std::ostream& operator<<(std::ostream& os, const CollectorType& collector_type); +static constexpr CollectorType kCollectorTypeDefault = +#if ART_DEFAULT_GC_TYPE_IS_CMS + kCollectorTypeCMS +#elif ART_DEFAULT_GC_TYPE_IS_SS + kCollectorTypeSS +#elif ART_DEFAULT_GC_TYPE_IS_GSS + kCollectorTypeGSS +#else + kCollectorTypeCMS +#error "ART default GC type must be set" +#endif + ; // NOLINT [whitespace/semicolon] [5] + } // namespace gc } // namespace art diff --git a/runtime/gc/heap.cc b/runtime/gc/heap.cc index 3f3add8..419d555 100644 --- a/runtime/gc/heap.cc +++ b/runtime/gc/heap.cc @@ -364,11 +364,11 @@ Heap::Heap(size_t initial_size, size_t growth_limit, size_t min_free, size_t max CHECK(non_moving_space_ != nullptr); CHECK(!non_moving_space_->CanMoveObjects()); // Allocate the large object space. - if (large_object_space_type == space::kLargeObjectSpaceTypeFreeList) { + if (large_object_space_type == space::LargeObjectSpaceType::kFreeList) { large_object_space_ = space::FreeListSpace::Create("free list large object space", nullptr, capacity_); CHECK(large_object_space_ != nullptr) << "Failed to create large object space"; - } else if (large_object_space_type == space::kLargeObjectSpaceTypeMap) { + } else if (large_object_space_type == space::LargeObjectSpaceType::kMap) { large_object_space_ = space::LargeObjectMapSpace::Create("mem map large object space"); CHECK(large_object_space_ != nullptr) << "Failed to create large object space"; } else { diff --git a/runtime/gc/heap.h b/runtime/gc/heap.h index 9aced81..57c1460 100644 --- a/runtime/gc/heap.h +++ b/runtime/gc/heap.h @@ -145,15 +145,14 @@ class Heap { static constexpr double kDefaultHeapGrowthMultiplier = 2.0; // Primitive arrays larger than this size are put in the large object space. static constexpr size_t kDefaultLargeObjectThreshold = 3 * kPageSize; + // Whether or not we use the free list large object space. Only use it if USE_ART_LOW_4G_ALLOCATOR // since this means that we have to use the slow msync loop in MemMap::MapAnonymous. -#if USE_ART_LOW_4G_ALLOCATOR - static constexpr space::LargeObjectSpaceType kDefaultLargeObjectSpaceType = - space::kLargeObjectSpaceTypeFreeList; -#else static constexpr space::LargeObjectSpaceType kDefaultLargeObjectSpaceType = - space::kLargeObjectSpaceTypeMap; -#endif + USE_ART_LOW_4G_ALLOCATOR ? + space::LargeObjectSpaceType::kFreeList + : space::LargeObjectSpaceType::kMap; + // Used so that we don't overflow the allocation time atomic integer. static constexpr size_t kTimeAdjust = 1024; diff --git a/runtime/gc/space/large_object_space.h b/runtime/gc/space/large_object_space.h index 850a006..847f575 100644 --- a/runtime/gc/space/large_object_space.h +++ b/runtime/gc/space/large_object_space.h @@ -31,10 +31,10 @@ namespace space { class AllocationInfo; -enum LargeObjectSpaceType { - kLargeObjectSpaceTypeDisabled, - kLargeObjectSpaceTypeMap, - kLargeObjectSpaceTypeFreeList, +enum class LargeObjectSpaceType { + kDisabled, + kMap, + kFreeList, }; // Abstraction implemented by all large object spaces. |