Mercurial > hg > truffle
annotate src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep @ 1716:be3f9c242c9d
6948538: CMS: BOT walkers can fall into object allocation and initialization cracks
Summary: GC workers now recognize an intermediate transient state of blocks which are allocated but have not yet completed initialization. blk_start() calls do not attempt to determine the size of a block in the transient state, rather waiting for the block to become initialized so that it is safe to query its size. Audited and ensured the order of initialization of object fields (klass, free bit and size) to respect block state transition protocol. Also included some new assertion checking code enabled in debug mode.
Reviewed-by: chrisphi, johnc, poonam
author | ysr |
---|---|
date | Mon, 16 Aug 2010 15:58:42 -0700 |
parents | f6f3eef8a521 |
children | 894b1d7c7e01 |
rev | line source |
---|---|
0 | 1 // |
1716
be3f9c242c9d
6948538: CMS: BOT walkers can fall into object allocation and initialization cracks
ysr
parents:
1703
diff
changeset
|
2 // Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. |
0 | 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 // | |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1521
diff
changeset
|
19 // Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1521
diff
changeset
|
20 // or visit www.oracle.com if you need additional information or have any |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1521
diff
changeset
|
21 // questions. |
0 | 22 // |
23 // | |
24 | |
25 // NOTE: DO NOT CHANGE THIS COPYRIGHT TO NEW STYLE - IT WILL BREAK makeDeps! | |
26 | |
27 binaryTreeDictionary.cpp allocationStats.hpp | |
28 binaryTreeDictionary.cpp binaryTreeDictionary.hpp | |
29 binaryTreeDictionary.cpp globals.hpp | |
30 binaryTreeDictionary.cpp ostream.hpp | |
528
37b3ca071522
6793825: Missing include dependancies for GCC without predefined headers
coleenp
parents:
356
diff
changeset
|
31 binaryTreeDictionary.cpp space.inline.hpp |
263
12eea04c8b06
6672698: mangle_unused_area() should not remangle the entire heap at each collection.
jmasa
parents:
187
diff
changeset
|
32 binaryTreeDictionary.cpp spaceDecorator.hpp |
0 | 33 |
34 binaryTreeDictionary.hpp freeBlockDictionary.hpp | |
35 binaryTreeDictionary.hpp freeList.hpp | |
36 | |
1716
be3f9c242c9d
6948538: CMS: BOT walkers can fall into object allocation and initialization cracks
ysr
parents:
1703
diff
changeset
|
37 blockOffsetTable.inline.hpp concurrentMarkSweepGeneration.hpp |
be3f9c242c9d
6948538: CMS: BOT walkers can fall into object allocation and initialization cracks
ysr
parents:
1703
diff
changeset
|
38 |
0 | 39 cmsAdaptiveSizePolicy.cpp cmsAdaptiveSizePolicy.hpp |
40 cmsAdaptiveSizePolicy.cpp defNewGeneration.hpp | |
41 cmsAdaptiveSizePolicy.cpp gcStats.hpp | |
42 cmsAdaptiveSizePolicy.cpp genCollectedHeap.hpp | |
43 cmsAdaptiveSizePolicy.cpp thread.hpp | |
44 cmsAdaptiveSizePolicy.cpp os_<os_family>.inline.hpp | |
45 | |
46 cmsAdaptiveSizePolicy.hpp adaptiveSizePolicy.hpp | |
47 cmsAdaptiveSizePolicy.hpp timer.hpp | |
48 | |
49 cmsCollectorPolicy.cpp arguments.hpp | |
50 cmsCollectorPolicy.cpp cardTableRS.hpp | |
51 cmsCollectorPolicy.cpp cmsAdaptiveSizePolicy.hpp | |
52 cmsCollectorPolicy.cpp cmsGCAdaptivePolicyCounters.hpp | |
53 cmsCollectorPolicy.cpp cmsCollectorPolicy.hpp | |
54 cmsCollectorPolicy.cpp collectorPolicy.hpp | |
55 cmsCollectorPolicy.cpp gcLocker.inline.hpp | |
56 cmsCollectorPolicy.cpp genCollectedHeap.hpp | |
57 cmsCollectorPolicy.cpp gcPolicyCounters.hpp | |
58 cmsCollectorPolicy.cpp generationSpec.hpp | |
59 cmsCollectorPolicy.cpp globals_extension.hpp | |
60 cmsCollectorPolicy.cpp handles.inline.hpp | |
61 cmsCollectorPolicy.cpp java.hpp | |
62 cmsCollectorPolicy.cpp parNewGeneration.hpp | |
63 cmsCollectorPolicy.cpp space.hpp | |
64 cmsCollectorPolicy.cpp thread_<os_family>.inline.hpp | |
65 cmsCollectorPolicy.cpp universe.hpp | |
66 cmsCollectorPolicy.cpp vmGCOperations.hpp | |
67 cmsCollectorPolicy.cpp vmThread.hpp | |
68 | |
69 cmsCollectorPolicy.hpp collectorPolicy.hpp | |
70 | |
71 cmsGCAdaptivePolicyCounters.cpp cmsGCAdaptivePolicyCounters.hpp | |
72 cmsGCAdaptivePolicyCounters.cpp resourceArea.hpp | |
73 | |
74 cmsGCAdaptivePolicyCounters.hpp cmsAdaptiveSizePolicy.hpp | |
75 cmsGCAdaptivePolicyCounters.hpp gcAdaptivePolicyCounters.hpp | |
76 cmsGCAdaptivePolicyCounters.hpp gcStats.hpp | |
77 cmsGCAdaptivePolicyCounters.hpp perfData.hpp | |
78 | |
79 cmsLockVerifier.cpp cmsLockVerifier.hpp | |
80 cmsLockVerifier.cpp concurrentMarkSweepThread.hpp | |
81 cmsLockVerifier.cpp vmThread.hpp | |
82 | |
83 cmsLockVerifier.hpp mutex.hpp | |
84 | |
85 cmsOopClosures.hpp genOopClosures.hpp | |
86 | |
87 cmsOopClosures.inline.hpp cmsOopClosures.hpp | |
88 cmsOopClosures.inline.hpp concurrentMarkSweepGeneration.hpp | |
89 | |
1716
be3f9c242c9d
6948538: CMS: BOT walkers can fall into object allocation and initialization cracks
ysr
parents:
1703
diff
changeset
|
90 cmsPermGen.cpp blockOffsetTable.inline.hpp |
0 | 91 cmsPermGen.cpp cSpaceCounters.hpp |
92 cmsPermGen.cpp cmsPermGen.hpp | |
93 cmsPermGen.cpp collectedHeap.inline.hpp | |
94 cmsPermGen.cpp compactPermGen.hpp | |
95 cmsPermGen.cpp concurrentMarkSweepGeneration.inline.hpp | |
96 cmsPermGen.cpp genCollectedHeap.hpp | |
97 cmsPermGen.cpp generation.inline.hpp | |
98 cmsPermGen.cpp java.hpp | |
99 cmsPermGen.cpp oop.inline.hpp | |
100 cmsPermGen.cpp permGen.hpp | |
101 cmsPermGen.cpp universe.hpp | |
102 | |
103 cmsPermGen.hpp concurrentMarkSweepGeneration.hpp | |
104 cmsPermGen.hpp permGen.hpp | |
105 | |
106 compactibleFreeListSpace.cpp allocation.inline.hpp | |
107 compactibleFreeListSpace.cpp blockOffsetTable.inline.hpp | |
108 compactibleFreeListSpace.cpp cmsLockVerifier.hpp | |
109 compactibleFreeListSpace.cpp collectedHeap.hpp | |
110 compactibleFreeListSpace.cpp compactibleFreeListSpace.hpp | |
111 compactibleFreeListSpace.cpp concurrentMarkSweepGeneration.inline.hpp | |
112 compactibleFreeListSpace.cpp concurrentMarkSweepThread.hpp | |
113 compactibleFreeListSpace.cpp copy.hpp | |
114 compactibleFreeListSpace.cpp globals.hpp | |
115 compactibleFreeListSpace.cpp handles.inline.hpp | |
116 compactibleFreeListSpace.cpp init.hpp | |
117 compactibleFreeListSpace.cpp java.hpp | |
118 compactibleFreeListSpace.cpp liveRange.hpp | |
119 compactibleFreeListSpace.cpp oop.inline.hpp | |
120 compactibleFreeListSpace.cpp resourceArea.hpp | |
263
12eea04c8b06
6672698: mangle_unused_area() should not remangle the entire heap at each collection.
jmasa
parents:
187
diff
changeset
|
121 compactibleFreeListSpace.cpp spaceDecorator.hpp |
0 | 122 compactibleFreeListSpace.cpp universe.inline.hpp |
123 compactibleFreeListSpace.cpp vmThread.hpp | |
124 | |
125 compactibleFreeListSpace.hpp binaryTreeDictionary.hpp | |
1716
be3f9c242c9d
6948538: CMS: BOT walkers can fall into object allocation and initialization cracks
ysr
parents:
1703
diff
changeset
|
126 compactibleFreeListSpace.hpp blockOffsetTable.inline.hpp |
0 | 127 compactibleFreeListSpace.hpp freeList.hpp |
1521 | 128 compactibleFreeListSpace.hpp promotionInfo.hpp |
0 | 129 compactibleFreeListSpace.hpp space.hpp |
130 | |
131 compactingPermGenGen.cpp concurrentMarkSweepGeneration.inline.hpp | |
132 | |
133 concurrentMarkSweepGeneration.cpp cardTableRS.hpp | |
134 concurrentMarkSweepGeneration.cpp cmsAdaptiveSizePolicy.hpp | |
135 concurrentMarkSweepGeneration.cpp cmsCollectorPolicy.hpp | |
136 concurrentMarkSweepGeneration.cpp cmsGCAdaptivePolicyCounters.hpp | |
137 concurrentMarkSweepGeneration.cpp cmsOopClosures.inline.hpp | |
138 concurrentMarkSweepGeneration.cpp codeCache.hpp | |
139 concurrentMarkSweepGeneration.cpp collectedHeap.inline.hpp | |
140 concurrentMarkSweepGeneration.cpp collectorCounters.hpp | |
141 concurrentMarkSweepGeneration.cpp collectorPolicy.hpp | |
142 concurrentMarkSweepGeneration.cpp compactibleFreeListSpace.hpp | |
143 concurrentMarkSweepGeneration.cpp concurrentMarkSweepGeneration.inline.hpp | |
144 concurrentMarkSweepGeneration.cpp concurrentMarkSweepThread.hpp | |
145 concurrentMarkSweepGeneration.cpp gcLocker.inline.hpp | |
146 concurrentMarkSweepGeneration.cpp genCollectedHeap.hpp | |
147 concurrentMarkSweepGeneration.cpp genMarkSweep.hpp | |
148 concurrentMarkSweepGeneration.cpp genOopClosures.inline.hpp | |
149 concurrentMarkSweepGeneration.cpp globals_extension.hpp | |
150 concurrentMarkSweepGeneration.cpp handles.inline.hpp | |
151 concurrentMarkSweepGeneration.cpp isGCActiveMark.hpp | |
935 | 152 concurrentMarkSweepGeneration.cpp iterator.hpp |
0 | 153 concurrentMarkSweepGeneration.cpp java.hpp |
154 concurrentMarkSweepGeneration.cpp jvmtiExport.hpp | |
1703
f6f3eef8a521
6581734: CMS Old Gen's collection usage is zero after GC which is incorrect
kevinw
parents:
1552
diff
changeset
|
155 concurrentMarkSweepGeneration.cpp memoryService.hpp |
0 | 156 concurrentMarkSweepGeneration.cpp oop.inline.hpp |
157 concurrentMarkSweepGeneration.cpp parNewGeneration.hpp | |
158 concurrentMarkSweepGeneration.cpp referencePolicy.hpp | |
159 concurrentMarkSweepGeneration.cpp resourceArea.hpp | |
160 concurrentMarkSweepGeneration.cpp runtimeService.hpp | |
161 concurrentMarkSweepGeneration.cpp symbolTable.hpp | |
162 concurrentMarkSweepGeneration.cpp systemDictionary.hpp | |
163 concurrentMarkSweepGeneration.cpp vmCMSOperations.hpp | |
164 concurrentMarkSweepGeneration.cpp vmThread.hpp | |
165 | |
342 | 166 concurrentMarkSweepGeneration.hpp bitMap.inline.hpp |
0 | 167 concurrentMarkSweepGeneration.hpp freeBlockDictionary.hpp |
168 concurrentMarkSweepGeneration.hpp gSpaceCounters.hpp | |
169 concurrentMarkSweepGeneration.hpp gcStats.hpp | |
170 concurrentMarkSweepGeneration.hpp generation.hpp | |
171 concurrentMarkSweepGeneration.hpp generationCounters.hpp | |
1703
f6f3eef8a521
6581734: CMS Old Gen's collection usage is zero after GC which is incorrect
kevinw
parents:
1552
diff
changeset
|
172 concurrentMarkSweepGeneration.hpp memoryService.hpp |
0 | 173 concurrentMarkSweepGeneration.hpp mutexLocker.hpp |
174 concurrentMarkSweepGeneration.hpp taskqueue.hpp | |
175 concurrentMarkSweepGeneration.hpp virtualspace.hpp | |
176 concurrentMarkSweepGeneration.hpp yieldingWorkgroup.hpp | |
177 | |
178 concurrentMarkSweepGeneration.inline.hpp cmsLockVerifier.hpp | |
179 concurrentMarkSweepGeneration.inline.hpp compactibleFreeListSpace.hpp | |
180 concurrentMarkSweepGeneration.inline.hpp concurrentMarkSweepGeneration.hpp | |
181 concurrentMarkSweepGeneration.inline.hpp concurrentMarkSweepThread.hpp | |
182 concurrentMarkSweepGeneration.inline.hpp defNewGeneration.hpp | |
183 concurrentMarkSweepGeneration.inline.hpp gcUtil.hpp | |
184 | |
185 concurrentMarkSweepThread.cpp concurrentMarkSweepGeneration.inline.hpp | |
186 concurrentMarkSweepThread.cpp concurrentMarkSweepThread.hpp | |
187 concurrentMarkSweepThread.cpp genCollectedHeap.hpp | |
188 concurrentMarkSweepThread.cpp init.hpp | |
189 concurrentMarkSweepThread.cpp instanceRefKlass.hpp | |
190 concurrentMarkSweepThread.cpp interfaceSupport.hpp | |
191 concurrentMarkSweepThread.cpp java.hpp | |
192 concurrentMarkSweepThread.cpp javaCalls.hpp | |
193 concurrentMarkSweepThread.cpp mutexLocker.hpp | |
194 concurrentMarkSweepThread.cpp oop.inline.hpp | |
195 concurrentMarkSweepThread.cpp os.hpp | |
196 concurrentMarkSweepThread.cpp systemDictionary.hpp | |
197 concurrentMarkSweepThread.cpp vmThread.hpp | |
198 | |
199 concurrentMarkSweepThread.hpp concurrentGCThread.hpp | |
200 concurrentMarkSweepThread.hpp concurrentMarkSweepGeneration.hpp | |
201 concurrentMarkSweepThread.hpp thread_<os_family>.inline.hpp | |
202 | |
203 freeBlockDictionary.cpp freeBlockDictionary.hpp | |
204 freeBlockDictionary.cpp thread_<os_family>.inline.hpp | |
205 | |
206 freeBlockDictionary.hpp allocation.hpp | |
207 freeBlockDictionary.hpp debug.hpp | |
187 | 208 freeBlockDictionary.hpp freeChunk.hpp |
0 | 209 freeBlockDictionary.hpp globalDefinitions.hpp |
210 freeBlockDictionary.hpp memRegion.hpp | |
211 freeBlockDictionary.hpp mutex.hpp | |
212 freeBlockDictionary.hpp ostream.hpp | |
213 | |
214 freeChunk.cpp copy.hpp | |
215 freeChunk.cpp freeBlockDictionary.hpp | |
216 | |
187 | 217 freeChunk.hpp allocation.hpp |
218 freeChunk.hpp debug.hpp | |
219 freeChunk.hpp globalDefinitions.hpp | |
220 freeChunk.hpp markOop.hpp | |
221 freeChunk.hpp memRegion.hpp | |
222 freeChunk.hpp mutex.hpp | |
223 freeChunk.hpp ostream.hpp | |
224 | |
0 | 225 freeList.cpp freeBlockDictionary.hpp |
226 freeList.cpp freeList.hpp | |
227 freeList.cpp globals.hpp | |
228 freeList.cpp mutex.hpp | |
229 freeList.cpp sharedHeap.hpp | |
1145
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
935
diff
changeset
|
230 freeList.cpp vmThread.hpp |
0 | 231 |
232 freeList.hpp allocationStats.hpp | |
233 | |
1521 | 234 promotionInfo.cpp compactibleFreeListSpace.hpp |
235 promotionInfo.cpp markOop.inline.hpp | |
236 promotionInfo.cpp oop.inline.hpp | |
237 promotionInfo.cpp promotionInfo.hpp | |
238 | |
239 promotionInfo.hpp allocation.hpp | |
240 promotionInfo.hpp freeChunk.hpp | |
241 | |
0 | 242 vmCMSOperations.cpp concurrentMarkSweepGeneration.inline.hpp |
243 vmCMSOperations.cpp concurrentMarkSweepThread.hpp | |
244 vmCMSOperations.cpp dtrace.hpp | |
245 vmCMSOperations.cpp gcLocker.inline.hpp | |
246 vmCMSOperations.cpp isGCActiveMark.hpp | |
247 vmCMSOperations.cpp interfaceSupport.hpp | |
248 vmCMSOperations.cpp vmCMSOperations.hpp | |
249 | |
250 vmCMSOperations.hpp concurrentMarkSweepGeneration.hpp | |
251 vmCMSOperations.hpp gcCause.hpp | |
252 vmCMSOperations.hpp vm_operations.hpp | |
253 vmCMSOperations.hpp vmGCOperations.hpp | |
254 | |
255 yieldingWorkgroup.cpp yieldingWorkgroup.hpp | |
256 | |
257 yieldingWorkgroup.hpp workgroup.hpp |