summaryrefslogtreecommitdiffstats
path: root/runtime/gc
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/gc')
-rw-r--r--runtime/gc/collector_type.h13
-rw-r--r--runtime/gc/heap.cc4
-rw-r--r--runtime/gc/heap.h11
-rw-r--r--runtime/gc/space/large_object_space.h8
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.