Thu, 11 Jun 2009 17:19:33 -0700
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
1 //
2 // Copyright 2004-2009 Sun Microsystems, Inc. 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 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 //
25 // NOTE: DO NOT CHANGE THIS COPYRIGHT TO NEW STYLE - IT WILL BREAK makeDeps!
27 bufferingOopClosure.hpp genOopClosures.hpp
28 bufferingOopClosure.hpp generation.hpp
29 bufferingOopClosure.hpp os.hpp
31 cardTableRS.cpp concurrentMark.hpp
32 cardTableRS.cpp g1SATBCardTableModRefBS.hpp
34 collectionSetChooser.cpp g1CollectedHeap.inline.hpp
35 collectionSetChooser.cpp g1CollectorPolicy.hpp
36 collectionSetChooser.cpp collectionSetChooser.hpp
37 collectionSetChooser.cpp space.inline.hpp
39 collectionSetChooser.hpp heapRegion.hpp
40 collectionSetChooser.hpp growableArray.hpp
42 concurrentG1Refine.cpp atomic.hpp
43 concurrentG1Refine.cpp concurrentG1Refine.hpp
44 concurrentG1Refine.cpp concurrentG1RefineThread.hpp
45 concurrentG1Refine.cpp copy.hpp
46 concurrentG1Refine.cpp g1CollectedHeap.inline.hpp
47 concurrentG1Refine.cpp g1RemSet.hpp
48 concurrentG1Refine.cpp space.inline.hpp
50 concurrentG1Refine.hpp globalDefinitions.hpp
51 concurrentG1Refine.hpp allocation.hpp
52 concurrentG1Refine.hpp thread.hpp
54 concurrentG1RefineThread.cpp concurrentG1Refine.hpp
55 concurrentG1RefineThread.cpp concurrentG1RefineThread.hpp
56 concurrentG1RefineThread.cpp g1CollectedHeap.inline.hpp
57 concurrentG1RefineThread.cpp g1CollectorPolicy.hpp
58 concurrentG1RefineThread.cpp handles.inline.hpp
59 concurrentG1RefineThread.cpp mutexLocker.hpp
60 concurrentG1RefineThread.cpp resourceArea.hpp
62 concurrentG1RefineThread.hpp concurrentGCThread.hpp
63 concurrentG1RefineThread.hpp coTracker.hpp
65 concurrentMark.cpp concurrentMark.hpp
66 concurrentMark.cpp concurrentMarkThread.inline.hpp
67 concurrentMark.cpp g1CollectedHeap.inline.hpp
68 concurrentMark.cpp g1CollectorPolicy.hpp
69 concurrentMark.cpp g1RemSet.hpp
70 concurrentMark.cpp gcOverheadReporter.hpp
71 concurrentMark.cpp genOopClosures.inline.hpp
72 concurrentMark.cpp heapRegionRemSet.hpp
73 concurrentMark.cpp heapRegionSeq.inline.hpp
74 concurrentMark.cpp handles.inline.hpp
75 concurrentMark.cpp java.hpp
76 concurrentMark.cpp oop.inline.hpp
77 concurrentMark.cpp referencePolicy.hpp
78 concurrentMark.cpp resourceArea.hpp
79 concurrentMark.cpp symbolTable.hpp
81 concurrentMark.hpp coTracker.hpp
82 concurrentMark.hpp heapRegion.hpp
83 concurrentMark.hpp taskqueue.hpp
85 concurrentMarkThread.cpp concurrentMarkThread.inline.hpp
86 concurrentMarkThread.cpp g1CollectedHeap.inline.hpp
87 concurrentMarkThread.cpp g1CollectorPolicy.hpp
88 concurrentMarkThread.cpp g1MMUTracker.hpp
89 concurrentMarkThread.cpp resourceArea.hpp
90 concurrentMarkThread.cpp vm_operations_g1.hpp
91 concurrentMarkThread.cpp vmThread.hpp
93 concurrentMarkThread.hpp concurrentGCThread.hpp
95 concurrentMarkThread.inline.hpp concurrentMark.hpp
96 concurrentMarkThread.inline.hpp concurrentMarkThread.hpp
98 concurrentZFThread.cpp concurrentZFThread.hpp
99 concurrentZFThread.cpp heapRegion.hpp
100 concurrentZFThread.cpp g1CollectedHeap.inline.hpp
101 concurrentZFThread.cpp copy.hpp
102 concurrentZFThread.cpp mutexLocker.hpp
103 concurrentZFThread.cpp space.inline.hpp
105 concurrentZFThread.hpp concurrentGCThread.hpp
106 concurrentZFThread.hpp coTracker.hpp
108 dirtyCardQueue.cpp atomic.hpp
109 dirtyCardQueue.cpp dirtyCardQueue.hpp
110 dirtyCardQueue.cpp heapRegionRemSet.hpp
111 dirtyCardQueue.cpp mutexLocker.hpp
112 dirtyCardQueue.cpp ptrQueue.inline.hpp
113 dirtyCardQueue.cpp safepoint.hpp
114 dirtyCardQueue.cpp thread.hpp
115 dirtyCardQueue.cpp thread_<os_family>.inline.hpp
116 dirtyCardQueue.cpp workgroup.hpp
118 dirtyCardQueue.hpp allocation.hpp
119 dirtyCardQueue.hpp ptrQueue.hpp
121 g1BlockOffsetTable.cpp g1BlockOffsetTable.inline.hpp
122 g1BlockOffsetTable.cpp java.hpp
123 g1BlockOffsetTable.cpp oop.inline.hpp
124 g1BlockOffsetTable.cpp space.hpp
126 g1BlockOffsetTable.hpp globalDefinitions.hpp
127 g1BlockOffsetTable.hpp memRegion.hpp
128 g1BlockOffsetTable.hpp virtualspace.hpp
130 g1BlockOffsetTable.inline.hpp g1BlockOffsetTable.hpp
131 g1BlockOffsetTable.inline.hpp space.hpp
133 g1CollectedHeap.cpp aprofiler.hpp
134 g1CollectedHeap.cpp bufferingOopClosure.hpp
135 g1CollectedHeap.cpp concurrentG1Refine.hpp
136 g1CollectedHeap.cpp concurrentG1RefineThread.hpp
137 g1CollectedHeap.cpp concurrentMarkThread.inline.hpp
138 g1CollectedHeap.cpp concurrentZFThread.hpp
139 g1CollectedHeap.cpp g1CollectedHeap.inline.hpp
140 g1CollectedHeap.cpp g1CollectorPolicy.hpp
141 g1CollectedHeap.cpp g1MarkSweep.hpp
142 g1CollectedHeap.cpp g1RemSet.hpp
143 g1CollectedHeap.cpp g1OopClosures.inline.hpp
144 g1CollectedHeap.cpp genOopClosures.inline.hpp
145 g1CollectedHeap.cpp gcLocker.inline.hpp
146 g1CollectedHeap.cpp gcOverheadReporter.hpp
147 g1CollectedHeap.cpp generationSpec.hpp
148 g1CollectedHeap.cpp heapRegionRemSet.hpp
149 g1CollectedHeap.cpp heapRegionSeq.inline.hpp
150 g1CollectedHeap.cpp icBuffer.hpp
151 g1CollectedHeap.cpp isGCActiveMark.hpp
152 g1CollectedHeap.cpp oop.inline.hpp
153 g1CollectedHeap.cpp oop.pcgc.inline.hpp
154 g1CollectedHeap.cpp parGCAllocBuffer.hpp
155 g1CollectedHeap.cpp vm_operations_g1.hpp
156 g1CollectedHeap.cpp vmThread.hpp
158 g1CollectedHeap.hpp barrierSet.hpp
159 g1CollectedHeap.hpp heapRegion.hpp
160 g1CollectedHeap.hpp memRegion.hpp
161 g1CollectedHeap.hpp sharedHeap.hpp
163 g1CollectedHeap.inline.hpp concurrentMark.hpp
164 g1CollectedHeap.inline.hpp g1CollectedHeap.hpp
165 g1CollectedHeap.inline.hpp heapRegionSeq.hpp
166 g1CollectedHeap.inline.hpp taskqueue.hpp
168 g1CollectorPolicy.cpp concurrentG1Refine.hpp
169 g1CollectorPolicy.cpp concurrentMark.hpp
170 g1CollectorPolicy.cpp concurrentMarkThread.inline.hpp
171 g1CollectorPolicy.cpp debug.hpp
172 g1CollectorPolicy.cpp java.hpp
173 g1CollectorPolicy.cpp g1CollectedHeap.inline.hpp
174 g1CollectorPolicy.cpp g1CollectorPolicy.hpp
175 g1CollectorPolicy.cpp heapRegionRemSet.hpp
176 g1CollectorPolicy.cpp mutexLocker.hpp
177 g1CollectorPolicy.cpp gcPolicyCounters.hpp
179 g1CollectorPolicy.hpp collectorPolicy.hpp
180 g1CollectorPolicy.hpp collectionSetChooser.hpp
181 g1CollectorPolicy.hpp g1MMUTracker.hpp
183 g1_globals.cpp g1_globals.hpp
185 g1_globals.hpp globals.hpp
187 globals.cpp g1_globals.hpp
188 top.hpp g1_globals.hpp
190 g1MarkSweep.cpp aprofiler.hpp
191 g1MarkSweep.cpp biasedLocking.hpp
192 g1MarkSweep.cpp codeCache.hpp
193 g1MarkSweep.cpp events.hpp
194 g1MarkSweep.cpp fprofiler.hpp
195 g1MarkSweep.hpp g1CollectedHeap.inline.hpp
196 g1MarkSweep.cpp g1MarkSweep.hpp
197 g1MarkSweep.cpp gcLocker.hpp
198 g1MarkSweep.cpp genCollectedHeap.hpp
199 g1MarkSweep.hpp heapRegion.hpp
200 g1MarkSweep.cpp icBuffer.hpp
201 g1MarkSweep.cpp instanceRefKlass.hpp
202 g1MarkSweep.cpp javaClasses.hpp
203 g1MarkSweep.cpp jvmtiExport.hpp
204 g1MarkSweep.cpp copy.hpp
205 g1MarkSweep.cpp modRefBarrierSet.hpp
206 g1MarkSweep.cpp oop.inline.hpp
207 g1MarkSweep.cpp referencePolicy.hpp
208 g1MarkSweep.cpp space.hpp
209 g1MarkSweep.cpp symbolTable.hpp
210 g1MarkSweep.cpp synchronizer.hpp
211 g1MarkSweep.cpp systemDictionary.hpp
212 g1MarkSweep.cpp thread.hpp
213 g1MarkSweep.cpp vmSymbols.hpp
214 g1MarkSweep.cpp vmThread.hpp
216 g1MarkSweep.hpp generation.hpp
217 g1MarkSweep.hpp growableArray.hpp
218 g1MarkSweep.hpp markOop.hpp
219 g1MarkSweep.hpp genMarkSweep.hpp
220 g1MarkSweep.hpp oop.hpp
221 g1MarkSweep.hpp timer.hpp
222 g1MarkSweep.hpp universe.hpp
224 g1OopClosures.inline.hpp concurrentMark.hpp
225 g1OopClosures.inline.hpp g1OopClosures.hpp
226 g1OopClosures.inline.hpp g1CollectedHeap.hpp
227 g1OopClosures.inline.hpp g1RemSet.hpp
229 g1MMUTracker.cpp g1MMUTracker.hpp
230 g1MMUTracker.cpp ostream.hpp
231 g1MMUTracker.cpp mutexLocker.hpp
233 g1MMUTracker.hpp debug.hpp
234 g1MMUTracker.hpp allocation.hpp
235 g1RemSet.cpp bufferingOopClosure.hpp
236 g1RemSet.cpp concurrentG1Refine.hpp
237 g1RemSet.cpp concurrentG1RefineThread.hpp
238 g1RemSet.cpp g1BlockOffsetTable.inline.hpp
239 g1RemSet.cpp g1CollectedHeap.inline.hpp
240 g1RemSet.cpp g1CollectorPolicy.hpp
241 g1RemSet.cpp g1RemSet.inline.hpp
242 g1RemSet.cpp g1OopClosures.inline.hpp
243 g1RemSet.cpp heapRegionSeq.inline.hpp
244 g1RemSet.cpp intHisto.hpp
245 g1RemSet.cpp iterator.hpp
246 g1RemSet.cpp oop.inline.hpp
248 g1RemSet.inline.hpp g1RemSet.hpp
249 g1RemSet.inline.hpp heapRegionRemSet.hpp
251 g1SATBCardTableModRefBS.cpp g1SATBCardTableModRefBS.hpp
252 g1SATBCardTableModRefBS.cpp heapRegion.hpp
253 g1SATBCardTableModRefBS.cpp mutexLocker.hpp
254 g1SATBCardTableModRefBS.cpp thread.hpp
255 g1SATBCardTableModRefBS.cpp thread_<os_family>.inline.hpp
256 g1SATBCardTableModRefBS.cpp satbQueue.hpp
258 g1SATBCardTableModRefBS.hpp cardTableModRefBS.hpp
259 g1SATBCardTableModRefBS.hpp memRegion.hpp
261 heapRegion.cpp concurrentZFThread.hpp
262 heapRegion.cpp g1BlockOffsetTable.inline.hpp
263 heapRegion.cpp g1CollectedHeap.inline.hpp
264 heapRegion.cpp g1OopClosures.inline.hpp
265 heapRegion.cpp genOopClosures.inline.hpp
266 heapRegion.cpp heapRegion.inline.hpp
267 heapRegion.cpp heapRegionRemSet.hpp
268 heapRegion.cpp heapRegionSeq.inline.hpp
269 heapRegion.cpp iterator.hpp
270 heapRegion.cpp oop.inline.hpp
272 heapRegion.hpp space.inline.hpp
273 heapRegion.hpp spaceDecorator.hpp
274 heapRegion.hpp g1BlockOffsetTable.inline.hpp
275 heapRegion.hpp watermark.hpp
276 heapRegion.hpp g1_specialized_oop_closures.hpp
277 heapRegion.hpp survRateGroup.hpp
278 heapRegion.hpp ageTable.hpp
280 heapRegionRemSet.hpp sparsePRT.hpp
282 heapRegionRemSet.cpp allocation.hpp
283 heapRegionRemSet.cpp bitMap.inline.hpp
284 heapRegionRemSet.cpp concurrentG1Refine.hpp
285 heapRegionRemSet.cpp g1BlockOffsetTable.inline.hpp
286 heapRegionRemSet.cpp g1CollectedHeap.inline.hpp
287 heapRegionRemSet.cpp heapRegionRemSet.hpp
288 heapRegionRemSet.cpp heapRegionSeq.inline.hpp
289 heapRegionRemSet.cpp globalDefinitions.hpp
290 heapRegionRemSet.cpp space.inline.hpp
292 heapRegionSeq.cpp allocation.hpp
293 heapRegionSeq.cpp g1CollectedHeap.inline.hpp
294 heapRegionSeq.cpp heapRegionSeq.hpp
296 heapRegionSeq.hpp growableArray.hpp
297 heapRegionSeq.hpp heapRegion.hpp
299 heapRegionSeq.inline.hpp heapRegionSeq.hpp
301 klass.hpp g1OopClosures.hpp
303 ptrQueue.cpp allocation.hpp
304 ptrQueue.cpp allocation.inline.hpp
305 ptrQueue.cpp mutex.hpp
306 ptrQueue.cpp mutexLocker.hpp
307 ptrQueue.cpp ptrQueue.hpp
308 ptrQueue.cpp ptrQueue.inline.hpp
309 ptrQueue.cpp thread_<os_family>.inline.hpp
311 ptrQueue.hpp allocation.hpp
312 ptrQueue.hpp sizes.hpp
314 ptrQueue.inline.hpp ptrQueue.hpp
316 satbQueue.cpp allocation.inline.hpp
317 satbQueue.cpp mutexLocker.hpp
318 satbQueue.cpp ptrQueue.inline.hpp
319 satbQueue.cpp satbQueue.hpp
320 satbQueue.cpp sharedHeap.hpp
321 satbQueue.cpp thread.hpp
323 satbQueue.hpp ptrQueue.hpp
325 sparsePRT.cpp allocation.inline.hpp
326 sparsePRT.cpp cardTableModRefBS.hpp
327 sparsePRT.cpp heapRegion.hpp
328 sparsePRT.cpp heapRegionRemSet.hpp
329 sparsePRT.cpp mutexLocker.hpp
330 sparsePRT.cpp sparsePRT.hpp
331 sparsePRT.cpp space.inline.hpp
333 sparsePRT.hpp allocation.hpp
334 sparsePRT.hpp cardTableModRefBS.hpp
335 sparsePRT.hpp globalDefinitions.hpp
336 sparsePRT.hpp g1CollectedHeap.inline.hpp
337 sparsePRT.hpp heapRegion.hpp
338 sparsePRT.hpp mutex.hpp
340 specialized_oop_closures.hpp g1_specialized_oop_closures.hpp
342 survRateGroup.hpp numberSeq.hpp
344 survRateGroup.cpp allocation.hpp
345 survRateGroup.cpp g1CollectedHeap.inline.hpp
346 survRateGroup.cpp g1CollectorPolicy.hpp
347 survRateGroup.cpp heapRegion.hpp
348 survRateGroup.cpp survRateGroup.hpp
350 thread.cpp concurrentMarkThread.inline.hpp
352 universe.cpp g1CollectedHeap.inline.hpp
353 universe.cpp g1CollectorPolicy.hpp
355 vm_operations_g1.hpp vmGCOperations.hpp
357 vm_operations_g1.cpp vm_operations_g1.hpp
358 vm_operations_g1.cpp g1CollectedHeap.inline.hpp
359 vm_operations_g1.cpp isGCActiveMark.hpp