1 /*
2  * Copyright (c) 2012, 2020, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.
8  *
9  * This code is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12  * version 2 for more details (a copy is included in the LICENSE file that
13  * accompanied this code).
14  *
15  * You should have received a copy of the GNU General Public License version
16  * 2 along with this work; if not, write to the Free Software Foundation,
17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18  *
19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20  * or visit www.oracle.com if you need additional information or have any
21  * questions.
22  *
23  */
24 #include "precompiled.hpp"
25 #include "runtime/globals_extension.hpp"
26 
27 #include "gc/shared/collectedHeap.hpp"
28 #include "gc/shared/gcArguments.hpp"
29 #include "gc/shared/gcConfiguration.hpp"
30 #include "memory/universe.hpp"
31 #include "oops/compressedOops.hpp"
32 #include "runtime/arguments.hpp"
33 #include "runtime/globals.hpp"
34 #include "utilities/debug.hpp"
35 
young_collector() const36 GCName GCConfiguration::young_collector() const {
37   if (UseG1GC) {
38     return G1New;
39   }
40 
41   if (UseParallelGC) {
42     return ParallelScavenge;
43   }
44 
45   if (UseZGC || UseShenandoahGC) {
46     return NA;
47   }
48 
49   return DefNew;
50 }
51 
old_collector() const52 GCName GCConfiguration::old_collector() const {
53   if (UseG1GC) {
54     return G1Old;
55   }
56 
57   if (UseParallelGC) {
58     return ParallelOld;
59   }
60 
61   if (UseZGC) {
62     return Z;
63   }
64 
65   if (UseShenandoahGC) {
66     return Shenandoah;
67   }
68 
69   return SerialOld;
70 }
71 
num_parallel_gc_threads() const72 uint GCConfiguration::num_parallel_gc_threads() const {
73   return ParallelGCThreads;
74 }
75 
num_concurrent_gc_threads() const76 uint GCConfiguration::num_concurrent_gc_threads() const {
77   return ConcGCThreads;
78 }
79 
uses_dynamic_gc_threads() const80 bool GCConfiguration::uses_dynamic_gc_threads() const {
81   return UseDynamicNumberOfGCThreads;
82 }
83 
is_explicit_gc_concurrent() const84 bool GCConfiguration::is_explicit_gc_concurrent() const {
85   return ExplicitGCInvokesConcurrent;
86 }
87 
is_explicit_gc_disabled() const88 bool GCConfiguration::is_explicit_gc_disabled() const {
89   return DisableExplicitGC;
90 }
91 
has_pause_target_default_value() const92 bool GCConfiguration::has_pause_target_default_value() const {
93   return FLAG_IS_DEFAULT(MaxGCPauseMillis);
94 }
95 
pause_target() const96 uintx GCConfiguration::pause_target() const {
97   return MaxGCPauseMillis;
98 }
99 
gc_time_ratio() const100 uintx GCConfiguration::gc_time_ratio() const {
101   return GCTimeRatio;
102 }
103 
uses_tlabs() const104 bool GCTLABConfiguration::uses_tlabs() const {
105   return UseTLAB;
106 }
107 
min_tlab_size() const108 size_t GCTLABConfiguration::min_tlab_size() const {
109   return MinTLABSize;
110 }
111 
tlab_refill_waste_limit() const112 uint GCTLABConfiguration::tlab_refill_waste_limit() const {
113   return TLABRefillWasteFraction;
114 }
115 
max_tenuring_threshold() const116 intx GCSurvivorConfiguration::max_tenuring_threshold() const {
117   return MaxTenuringThreshold;
118 }
119 
initial_tenuring_threshold() const120 intx GCSurvivorConfiguration::initial_tenuring_threshold() const {
121   return InitialTenuringThreshold;
122 }
123 
max_size() const124 size_t GCHeapConfiguration::max_size() const {
125   return MaxHeapSize;
126 }
127 
min_size() const128 size_t GCHeapConfiguration::min_size() const {
129   return MinHeapSize;
130 }
131 
initial_size() const132 size_t GCHeapConfiguration::initial_size() const {
133   return InitialHeapSize;
134 }
135 
uses_compressed_oops() const136 bool GCHeapConfiguration::uses_compressed_oops() const {
137   return UseCompressedOops;
138 }
139 
narrow_oop_mode() const140 CompressedOops::Mode GCHeapConfiguration::narrow_oop_mode() const {
141   return CompressedOops::mode();
142 }
143 
object_alignment_in_bytes() const144 uint GCHeapConfiguration::object_alignment_in_bytes() const {
145   return ObjectAlignmentInBytes;
146 }
147 
heap_address_size_in_bits() const148 int GCHeapConfiguration::heap_address_size_in_bits() const {
149   return BitsPerHeapOop;
150 }
151 
has_max_size_default_value() const152 bool GCYoungGenerationConfiguration::has_max_size_default_value() const {
153   return FLAG_IS_DEFAULT(MaxNewSize);
154 }
155 
max_size() const156 uintx GCYoungGenerationConfiguration::max_size() const {
157   return MaxNewSize;
158 }
159 
min_size() const160 uintx GCYoungGenerationConfiguration::min_size() const {
161   return NewSize;
162 }
163 
new_ratio() const164 intx GCYoungGenerationConfiguration::new_ratio() const {
165   return NewRatio;
166 }
167