Mercurial > hg > graal-jvmci-8
annotate src/share/vm/gc_implementation/g1/g1_globals.hpp @ 807:d44bdab1c03d
6843694: G1: assert(index < _vs.committed_size(),"bad index"), g1BlockOffsetTable.inline.hpp:55
Summary: For heaps larger than 32Gb, the number of heap regions overflows the data type used to hold the region index in the SparsePRT structure. Changed the region indexes, card indexes, and RSet hash table buckets to ints and added some size overflow guarantees.
Reviewed-by: ysr, tonyp
author | johnc |
---|---|
date | Thu, 11 Jun 2009 17:19:33 -0700 |
parents | 315a5d70b295 |
children | df6caf649ff7 |
rev | line source |
---|---|
342 | 1 /* |
579 | 2 * Copyright 2001-2009 Sun Microsystems, Inc. All Rights Reserved. |
342 | 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, | |
20 * CA 95054 USA or visit www.sun.com if you need additional information or | |
21 * have any questions. | |
22 * | |
23 */ | |
24 | |
25 // | |
26 // Defines all globals flags used by the garbage-first compiler. | |
27 // | |
28 | |
350
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
342
diff
changeset
|
29 #define G1_FLAGS(develop, develop_pd, product, product_pd, diagnostic, experimental, notproduct, manageable, product_rw) \ |
342 | 30 \ |
751 | 31 product(intx, G1ParallelGCAllocBufferSize, 8*K, \ |
342 | 32 "Size of parallel G1 allocation buffers in to-space.") \ |
33 \ | |
751 | 34 product(intx, G1ConfidencePercent, 50, \ |
342 | 35 "Confidence level for MMU/pause predictions") \ |
36 \ | |
751 | 37 develop(intx, G1MarkingOverheadPercent, 0, \ |
342 | 38 "Overhead of concurrent marking") \ |
39 \ | |
751 | 40 develop(bool, G1AccountConcurrentOverhead, false, \ |
342 | 41 "Whether soft real-time compliance in G1 will take into account" \ |
42 "concurrent overhead") \ | |
43 \ | |
44 product(intx, G1YoungGenSize, 0, \ | |
45 "Size of the G1 young generation, 0 is the adaptive policy") \ | |
46 \ | |
751 | 47 develop(bool, G1Gen, true, \ |
342 | 48 "If true, it will enable the generational G1") \ |
49 \ | |
751 | 50 develop(intx, G1GCPercent, 10, \ |
342 | 51 "The desired percent time spent on GC") \ |
52 \ | |
751 | 53 develop(intx, G1PolicyVerbose, 0, \ |
342 | 54 "The verbosity level on G1 policy decisions") \ |
55 \ | |
56 develop(bool, G1UseHRIntoRS, true, \ | |
57 "Determines whether the 'advanced' HR Into rem set is used.") \ | |
58 \ | |
59 develop(intx, G1MarkingVerboseLevel, 0, \ | |
60 "Level (0-4) of verboseness of the marking code") \ | |
61 \ | |
745
2b6c55e36143
6829013: G1: set the default value of G1VerifyConcMarkPrintRechable to false
tonyp
parents:
677
diff
changeset
|
62 develop(bool, G1VerifyConcMarkPrintReachable, false, \ |
342 | 63 "If conc mark verification fails, print reachable objects") \ |
64 \ | |
65 develop(bool, G1TraceMarkStackOverflow, false, \ | |
66 "If true, extra debugging code for CM restart for ovflw.") \ | |
67 \ | |
68 develop(intx, G1PausesBtwnConcMark, -1, \ | |
69 "If positive, fixed number of pauses between conc markings") \ | |
70 \ | |
751 | 71 diagnostic(bool, G1SummarizeConcurrentMark, false, \ |
342 | 72 "Summarize concurrent mark info") \ |
73 \ | |
751 | 74 diagnostic(bool, G1SummarizeRSetStats, false, \ |
342 | 75 "Summarize remembered set processing info") \ |
76 \ | |
751 | 77 diagnostic(bool, G1SummarizeZFStats, false, \ |
342 | 78 "Summarize zero-filling info") \ |
79 \ | |
751 | 80 develop(bool, G1TraceConcurrentRefinement, false, \ |
342 | 81 "Trace G1 concurrent refinement") \ |
82 \ | |
83 develop(bool, G1ConcMark, true, \ | |
84 "If true, run concurrent marking for G1") \ | |
85 \ | |
751 | 86 product(intx, G1MarkStackSize, 2 * 1024 * 1024, \ |
342 | 87 "Size of the mark stack for concurrent marking.") \ |
88 \ | |
751 | 89 product(intx, G1MarkRegionStackSize, 1024 * 1024, \ |
342 | 90 "Size of the region stack for concurrent marking.") \ |
91 \ | |
92 develop(bool, G1ConcRefine, true, \ | |
93 "If true, run concurrent rem set refinement for G1") \ | |
94 \ | |
95 develop(intx, G1ConcRefineTargTraversals, 4, \ | |
96 "Number of concurrent refinement we try to achieve") \ | |
97 \ | |
98 develop(intx, G1ConcRefineInitialDelta, 4, \ | |
99 "Number of heap regions of alloc ahead of starting collection " \ | |
100 "pause to start concurrent refinement (initially)") \ | |
101 \ | |
751 | 102 develop(bool, G1SmoothConcRefine, true, \ |
342 | 103 "Attempts to smooth out the overhead of concurrent refinement") \ |
104 \ | |
105 develop(bool, G1ConcZeroFill, true, \ | |
106 "If true, run concurrent zero-filling thread") \ | |
107 \ | |
108 develop(intx, G1ConcZFMaxRegions, 1, \ | |
109 "Stop zero-filling when # of zf'd regions reaches") \ | |
110 \ | |
111 product(intx, G1SteadyStateUsed, 90, \ | |
112 "If non-0, try to maintain 'used' at this pct (of max)") \ | |
113 \ | |
114 product(intx, G1SteadyStateUsedDelta, 30, \ | |
115 "If G1SteadyStateUsed is non-0, then do pause this number of " \ | |
116 "of percentage points earlier if no marking is in progress.") \ | |
117 \ | |
118 develop(bool, G1SATBBarrierPrintNullPreVals, false, \ | |
119 "If true, count frac of ptr writes with null pre-vals.") \ | |
120 \ | |
121 product(intx, G1SATBLogBufferSize, 1*K, \ | |
122 "Number of entries in an SATB log buffer.") \ | |
123 \ | |
124 product(intx, G1SATBProcessCompletedThreshold, 20, \ | |
125 "Number of completed buffers that triggers log processing.") \ | |
126 \ | |
127 develop(intx, G1ExtraRegionSurvRate, 33, \ | |
128 "If the young survival rate is S, and there's room left in " \ | |
129 "to-space, we will allow regions whose survival rate is up to " \ | |
130 "S + (1 - S)*X, where X is this parameter (as a fraction.)") \ | |
131 \ | |
132 develop(intx, G1InitYoungSurvRatio, 50, \ | |
133 "Expected Survival Rate for newly allocated bytes") \ | |
134 \ | |
135 develop(bool, G1SATBPrintStubs, false, \ | |
136 "If true, print generated stubs for the SATB barrier") \ | |
137 \ | |
751 | 138 product(intx, G1ExpandByPercentOfAvailable, 20, \ |
342 | 139 "When expanding, % of uncommitted space to claim.") \ |
140 \ | |
141 develop(bool, G1RSBarrierRegionFilter, true, \ | |
142 "If true, generate region filtering code in RS barrier") \ | |
143 \ | |
144 develop(bool, G1RSBarrierNullFilter, true, \ | |
145 "If true, generate null-pointer filtering code in RS barrier") \ | |
146 \ | |
147 develop(bool, G1PrintCTFilterStats, false, \ | |
148 "If true, print stats on RS filtering effectiveness") \ | |
149 \ | |
616
4f360ec815ba
6720309: G1: don't synchronously update RSet during evacuation pauses
iveresov
parents:
545
diff
changeset
|
150 develop(bool, G1DeferredRSUpdate, true, \ |
4f360ec815ba
6720309: G1: don't synchronously update RSet during evacuation pauses
iveresov
parents:
545
diff
changeset
|
151 "If true, use deferred RS updates") \ |
4f360ec815ba
6720309: G1: don't synchronously update RSet during evacuation pauses
iveresov
parents:
545
diff
changeset
|
152 \ |
342 | 153 develop(bool, G1RSLogCheckCardTable, false, \ |
154 "If true, verify that no dirty cards remain after RS log " \ | |
155 "processing.") \ | |
156 \ | |
157 develop(bool, G1RSCountHisto, false, \ | |
158 "If true, print a histogram of RS occupancies after each pause") \ | |
159 \ | |
160 develop(intx, G1PrintRegionLivenessInfo, 0, \ | |
161 "When > 0, print the occupancies of the <n> best and worst" \ | |
162 "regions.") \ | |
163 \ | |
164 develop(bool, G1PrintParCleanupStats, false, \ | |
165 "When true, print extra stats about parallel cleanup.") \ | |
166 \ | |
167 develop(bool, G1DisablePreBarrier, false, \ | |
168 "Disable generation of pre-barrier (i.e., marking barrier) ") \ | |
169 \ | |
170 develop(bool, G1DisablePostBarrier, false, \ | |
171 "Disable generation of post-barrier (i.e., RS barrier) ") \ | |
172 \ | |
173 product(intx, G1DirtyCardQueueMax, 30, \ | |
174 "Maximum number of completed RS buffers before mutator threads " \ | |
175 "start processing them.") \ | |
176 \ | |
177 develop(intx, G1ConcRSLogCacheSize, 10, \ | |
178 "Log base 2 of the length of conc RS hot-card cache.") \ | |
179 \ | |
751 | 180 develop(bool, G1ConcRSCountTraversals, false, \ |
342 | 181 "If true, gather data about the number of times CR traverses " \ |
182 "cards ") \ | |
183 \ | |
751 | 184 develop(intx, G1ConcRSHotCardLimit, 4, \ |
342 | 185 "The threshold that defines (>=) a hot card.") \ |
186 \ | |
187 develop(bool, G1PrintOopAppls, false, \ | |
188 "When true, print applications of closures to external locs.") \ | |
189 \ | |
751 | 190 develop(intx, G1LogRSRegionEntries, 7, \ |
342 | 191 "Log_2 of max number of regions for which we keep bitmaps.") \ |
192 \ | |
193 develop(bool, G1RecordHRRSOops, false, \ | |
194 "When true, record recent calls to rem set operations.") \ | |
195 \ | |
196 develop(bool, G1RecordHRRSEvents, false, \ | |
197 "When true, record recent calls to rem set operations.") \ | |
198 \ | |
199 develop(intx, G1MaxVerifyFailures, -1, \ | |
200 "The maximum number of verification failrues to print. " \ | |
201 "-1 means print all.") \ | |
202 \ | |
203 develop(bool, G1ScrubRemSets, true, \ | |
204 "When true, do RS scrubbing after cleanup.") \ | |
205 \ | |
206 develop(bool, G1RSScrubVerbose, false, \ | |
207 "When true, do RS scrubbing with verbose output.") \ | |
208 \ | |
209 develop(bool, G1YoungSurvRateVerbose, false, \ | |
210 "print out the survival rate of young regions according to age.") \ | |
211 \ | |
212 develop(intx, G1YoungSurvRateNumRegionsSummary, 0, \ | |
213 "the number of regions for which we'll print a surv rate " \ | |
214 "summary.") \ | |
215 \ | |
216 product(bool, G1UseScanOnlyPrefix, false, \ | |
217 "It determines whether the system will calculate an optimum " \ | |
218 "scan-only set.") \ | |
219 \ | |
751 | 220 product(intx, G1MinReservePercent, 10, \ |
342 | 221 "It determines the minimum reserve we should have in the heap " \ |
222 "to minimize the probability of promotion failure.") \ | |
223 \ | |
751 | 224 diagnostic(bool, G1PrintRegions, false, \ |
342 | 225 "If set G1 will print information on which regions are being " \ |
226 "allocated and which are reclaimed.") \ | |
227 \ | |
228 develop(bool, G1HRRSUseSparseTable, true, \ | |
229 "When true, use sparse table to save space.") \ | |
230 \ | |
231 develop(bool, G1HRRSFlushLogBuffersOnVerify, false, \ | |
232 "Forces flushing of log buffers before verification.") \ | |
233 \ | |
751 | 234 product(bool, G1UseSurvivorSpaces, true, \ |
545 | 235 "When true, use survivor space.") \ |
236 \ | |
751 | 237 develop(bool, G1FixedTenuringThreshold, false, \ |
545 | 238 "When set, G1 will not adjust the tenuring threshold") \ |
239 \ | |
751 | 240 develop(bool, G1FixedEdenSize, false, \ |
545 | 241 "When set, G1 will not allocate unused survivor space regions") \ |
242 \ | |
751 | 243 develop(uintx, G1FixedSurvivorSpaceSize, 0, \ |
545 | 244 "If non-0 is the size of the G1 survivor space, " \ |
638
2a5da27ccae9
6816154: G1: introduce flags to enable/disable RSet updating and scanning
tonyp
parents:
616
diff
changeset
|
245 "otherwise SurvivorRatio is used to determine the size") \ |
2a5da27ccae9
6816154: G1: introduce flags to enable/disable RSet updating and scanning
tonyp
parents:
616
diff
changeset
|
246 \ |
751 | 247 experimental(bool, G1ParallelRSetUpdatingEnabled, false, \ |
638
2a5da27ccae9
6816154: G1: introduce flags to enable/disable RSet updating and scanning
tonyp
parents:
616
diff
changeset
|
248 "Enables the parallelization of remembered set updating " \ |
2a5da27ccae9
6816154: G1: introduce flags to enable/disable RSet updating and scanning
tonyp
parents:
616
diff
changeset
|
249 "during evacuation pauses") \ |
2a5da27ccae9
6816154: G1: introduce flags to enable/disable RSet updating and scanning
tonyp
parents:
616
diff
changeset
|
250 \ |
751 | 251 experimental(bool, G1ParallelRSetScanningEnabled, false, \ |
638
2a5da27ccae9
6816154: G1: introduce flags to enable/disable RSet updating and scanning
tonyp
parents:
616
diff
changeset
|
252 "Enables the parallelization of remembered set scanning " \ |
794 | 253 "during evacuation pauses") \ |
254 \ | |
255 product(uintx, G1ParallelRSetThreads, 0, \ | |
256 "If non-0 is the number of parallel rem set update threads, " \ | |
257 "otherwise the value is determined ergonomically.") | |
342 | 258 |
350
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
342
diff
changeset
|
259 G1_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_EXPERIMENTAL_FLAG, DECLARE_NOTPRODUCT_FLAG, DECLARE_MANAGEABLE_FLAG, DECLARE_PRODUCT_RW_FLAG) |