Mon, 02 Aug 2010 12:51:43 -0700
6814437: G1: remove the _new_refs array
Summary: The per-worker _new_refs array is used to hold references that point into the collection set. It is populated during RSet updating and subsequently processed. In the event of an evacuation failure it processed again to recreate the RSets of regions in the collection set. Remove the per-worker _new_refs array by processing the references directly. Use a DirtyCardQueue to hold the cards containing the references so that the RSets of regions in the collection set can be recreated when handling an evacuation failure.
Reviewed-by: iveresov, jmasa, tonyp
1 //
2 // Copyright (c) 2004, 2009, 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 //
25 // NOTE: DO NOT CHANGE THIS COPYRIGHT TO NEW STYLE - IT WILL BREAK makeDeps!
27 binaryTreeDictionary.cpp allocationStats.hpp
28 binaryTreeDictionary.cpp binaryTreeDictionary.hpp
29 binaryTreeDictionary.cpp globals.hpp
30 binaryTreeDictionary.cpp ostream.hpp
31 binaryTreeDictionary.cpp space.inline.hpp
32 binaryTreeDictionary.cpp spaceDecorator.hpp
34 binaryTreeDictionary.hpp freeBlockDictionary.hpp
35 binaryTreeDictionary.hpp freeList.hpp
37 cmsAdaptiveSizePolicy.cpp cmsAdaptiveSizePolicy.hpp
38 cmsAdaptiveSizePolicy.cpp defNewGeneration.hpp
39 cmsAdaptiveSizePolicy.cpp gcStats.hpp
40 cmsAdaptiveSizePolicy.cpp genCollectedHeap.hpp
41 cmsAdaptiveSizePolicy.cpp thread.hpp
42 cmsAdaptiveSizePolicy.cpp os_<os_family>.inline.hpp
44 cmsAdaptiveSizePolicy.hpp adaptiveSizePolicy.hpp
45 cmsAdaptiveSizePolicy.hpp timer.hpp
47 cmsCollectorPolicy.cpp arguments.hpp
48 cmsCollectorPolicy.cpp cardTableRS.hpp
49 cmsCollectorPolicy.cpp cmsAdaptiveSizePolicy.hpp
50 cmsCollectorPolicy.cpp cmsGCAdaptivePolicyCounters.hpp
51 cmsCollectorPolicy.cpp cmsCollectorPolicy.hpp
52 cmsCollectorPolicy.cpp collectorPolicy.hpp
53 cmsCollectorPolicy.cpp gcLocker.inline.hpp
54 cmsCollectorPolicy.cpp genCollectedHeap.hpp
55 cmsCollectorPolicy.cpp gcPolicyCounters.hpp
56 cmsCollectorPolicy.cpp generationSpec.hpp
57 cmsCollectorPolicy.cpp globals_extension.hpp
58 cmsCollectorPolicy.cpp handles.inline.hpp
59 cmsCollectorPolicy.cpp java.hpp
60 cmsCollectorPolicy.cpp parNewGeneration.hpp
61 cmsCollectorPolicy.cpp space.hpp
62 cmsCollectorPolicy.cpp thread_<os_family>.inline.hpp
63 cmsCollectorPolicy.cpp universe.hpp
64 cmsCollectorPolicy.cpp vmGCOperations.hpp
65 cmsCollectorPolicy.cpp vmThread.hpp
67 cmsCollectorPolicy.hpp collectorPolicy.hpp
69 cmsGCAdaptivePolicyCounters.cpp cmsGCAdaptivePolicyCounters.hpp
70 cmsGCAdaptivePolicyCounters.cpp resourceArea.hpp
72 cmsGCAdaptivePolicyCounters.hpp cmsAdaptiveSizePolicy.hpp
73 cmsGCAdaptivePolicyCounters.hpp gcAdaptivePolicyCounters.hpp
74 cmsGCAdaptivePolicyCounters.hpp gcStats.hpp
75 cmsGCAdaptivePolicyCounters.hpp perfData.hpp
77 cmsLockVerifier.cpp cmsLockVerifier.hpp
78 cmsLockVerifier.cpp concurrentMarkSweepThread.hpp
79 cmsLockVerifier.cpp vmThread.hpp
81 cmsLockVerifier.hpp mutex.hpp
83 cmsOopClosures.hpp genOopClosures.hpp
85 cmsOopClosures.inline.hpp cmsOopClosures.hpp
86 cmsOopClosures.inline.hpp concurrentMarkSweepGeneration.hpp
88 cmsPermGen.cpp blockOffsetTable.hpp
89 cmsPermGen.cpp cSpaceCounters.hpp
90 cmsPermGen.cpp cmsPermGen.hpp
91 cmsPermGen.cpp collectedHeap.inline.hpp
92 cmsPermGen.cpp compactPermGen.hpp
93 cmsPermGen.cpp concurrentMarkSweepGeneration.inline.hpp
94 cmsPermGen.cpp genCollectedHeap.hpp
95 cmsPermGen.cpp generation.inline.hpp
96 cmsPermGen.cpp java.hpp
97 cmsPermGen.cpp oop.inline.hpp
98 cmsPermGen.cpp permGen.hpp
99 cmsPermGen.cpp universe.hpp
101 cmsPermGen.hpp concurrentMarkSweepGeneration.hpp
102 cmsPermGen.hpp permGen.hpp
104 compactibleFreeListSpace.cpp allocation.inline.hpp
105 compactibleFreeListSpace.cpp blockOffsetTable.inline.hpp
106 compactibleFreeListSpace.cpp cmsLockVerifier.hpp
107 compactibleFreeListSpace.cpp collectedHeap.hpp
108 compactibleFreeListSpace.cpp compactibleFreeListSpace.hpp
109 compactibleFreeListSpace.cpp concurrentMarkSweepGeneration.inline.hpp
110 compactibleFreeListSpace.cpp concurrentMarkSweepThread.hpp
111 compactibleFreeListSpace.cpp copy.hpp
112 compactibleFreeListSpace.cpp globals.hpp
113 compactibleFreeListSpace.cpp handles.inline.hpp
114 compactibleFreeListSpace.cpp init.hpp
115 compactibleFreeListSpace.cpp java.hpp
116 compactibleFreeListSpace.cpp liveRange.hpp
117 compactibleFreeListSpace.cpp oop.inline.hpp
118 compactibleFreeListSpace.cpp resourceArea.hpp
119 compactibleFreeListSpace.cpp spaceDecorator.hpp
120 compactibleFreeListSpace.cpp universe.inline.hpp
121 compactibleFreeListSpace.cpp vmThread.hpp
123 compactibleFreeListSpace.hpp binaryTreeDictionary.hpp
124 compactibleFreeListSpace.hpp freeList.hpp
125 compactibleFreeListSpace.hpp promotionInfo.hpp
126 compactibleFreeListSpace.hpp space.hpp
128 compactingPermGenGen.cpp concurrentMarkSweepGeneration.inline.hpp
130 concurrentMarkSweepGeneration.cpp cardTableRS.hpp
131 concurrentMarkSweepGeneration.cpp cmsAdaptiveSizePolicy.hpp
132 concurrentMarkSweepGeneration.cpp cmsCollectorPolicy.hpp
133 concurrentMarkSweepGeneration.cpp cmsGCAdaptivePolicyCounters.hpp
134 concurrentMarkSweepGeneration.cpp cmsOopClosures.inline.hpp
135 concurrentMarkSweepGeneration.cpp codeCache.hpp
136 concurrentMarkSweepGeneration.cpp collectedHeap.inline.hpp
137 concurrentMarkSweepGeneration.cpp collectorCounters.hpp
138 concurrentMarkSweepGeneration.cpp collectorPolicy.hpp
139 concurrentMarkSweepGeneration.cpp compactibleFreeListSpace.hpp
140 concurrentMarkSweepGeneration.cpp concurrentMarkSweepGeneration.inline.hpp
141 concurrentMarkSweepGeneration.cpp concurrentMarkSweepThread.hpp
142 concurrentMarkSweepGeneration.cpp gcLocker.inline.hpp
143 concurrentMarkSweepGeneration.cpp genCollectedHeap.hpp
144 concurrentMarkSweepGeneration.cpp genMarkSweep.hpp
145 concurrentMarkSweepGeneration.cpp genOopClosures.inline.hpp
146 concurrentMarkSweepGeneration.cpp globals_extension.hpp
147 concurrentMarkSweepGeneration.cpp handles.inline.hpp
148 concurrentMarkSweepGeneration.cpp isGCActiveMark.hpp
149 concurrentMarkSweepGeneration.cpp iterator.hpp
150 concurrentMarkSweepGeneration.cpp java.hpp
151 concurrentMarkSweepGeneration.cpp jvmtiExport.hpp
152 concurrentMarkSweepGeneration.cpp memoryService.hpp
153 concurrentMarkSweepGeneration.cpp oop.inline.hpp
154 concurrentMarkSweepGeneration.cpp parNewGeneration.hpp
155 concurrentMarkSweepGeneration.cpp referencePolicy.hpp
156 concurrentMarkSweepGeneration.cpp resourceArea.hpp
157 concurrentMarkSweepGeneration.cpp runtimeService.hpp
158 concurrentMarkSweepGeneration.cpp symbolTable.hpp
159 concurrentMarkSweepGeneration.cpp systemDictionary.hpp
160 concurrentMarkSweepGeneration.cpp vmCMSOperations.hpp
161 concurrentMarkSweepGeneration.cpp vmThread.hpp
163 concurrentMarkSweepGeneration.hpp bitMap.inline.hpp
164 concurrentMarkSweepGeneration.hpp freeBlockDictionary.hpp
165 concurrentMarkSweepGeneration.hpp gSpaceCounters.hpp
166 concurrentMarkSweepGeneration.hpp gcStats.hpp
167 concurrentMarkSweepGeneration.hpp generation.hpp
168 concurrentMarkSweepGeneration.hpp generationCounters.hpp
169 concurrentMarkSweepGeneration.hpp memoryService.hpp
170 concurrentMarkSweepGeneration.hpp mutexLocker.hpp
171 concurrentMarkSweepGeneration.hpp taskqueue.hpp
172 concurrentMarkSweepGeneration.hpp virtualspace.hpp
173 concurrentMarkSweepGeneration.hpp yieldingWorkgroup.hpp
175 concurrentMarkSweepGeneration.inline.hpp cmsLockVerifier.hpp
176 concurrentMarkSweepGeneration.inline.hpp compactibleFreeListSpace.hpp
177 concurrentMarkSweepGeneration.inline.hpp concurrentMarkSweepGeneration.hpp
178 concurrentMarkSweepGeneration.inline.hpp concurrentMarkSweepThread.hpp
179 concurrentMarkSweepGeneration.inline.hpp defNewGeneration.hpp
180 concurrentMarkSweepGeneration.inline.hpp gcUtil.hpp
182 concurrentMarkSweepThread.cpp concurrentMarkSweepGeneration.inline.hpp
183 concurrentMarkSweepThread.cpp concurrentMarkSweepThread.hpp
184 concurrentMarkSweepThread.cpp genCollectedHeap.hpp
185 concurrentMarkSweepThread.cpp init.hpp
186 concurrentMarkSweepThread.cpp instanceRefKlass.hpp
187 concurrentMarkSweepThread.cpp interfaceSupport.hpp
188 concurrentMarkSweepThread.cpp java.hpp
189 concurrentMarkSweepThread.cpp javaCalls.hpp
190 concurrentMarkSweepThread.cpp mutexLocker.hpp
191 concurrentMarkSweepThread.cpp oop.inline.hpp
192 concurrentMarkSweepThread.cpp os.hpp
193 concurrentMarkSweepThread.cpp systemDictionary.hpp
194 concurrentMarkSweepThread.cpp vmThread.hpp
196 concurrentMarkSweepThread.hpp concurrentGCThread.hpp
197 concurrentMarkSweepThread.hpp concurrentMarkSweepGeneration.hpp
198 concurrentMarkSweepThread.hpp thread_<os_family>.inline.hpp
200 freeBlockDictionary.cpp freeBlockDictionary.hpp
201 freeBlockDictionary.cpp thread_<os_family>.inline.hpp
203 freeBlockDictionary.hpp allocation.hpp
204 freeBlockDictionary.hpp debug.hpp
205 freeBlockDictionary.hpp freeChunk.hpp
206 freeBlockDictionary.hpp globalDefinitions.hpp
207 freeBlockDictionary.hpp memRegion.hpp
208 freeBlockDictionary.hpp mutex.hpp
209 freeBlockDictionary.hpp ostream.hpp
211 freeChunk.cpp copy.hpp
212 freeChunk.cpp freeBlockDictionary.hpp
214 freeChunk.hpp allocation.hpp
215 freeChunk.hpp debug.hpp
216 freeChunk.hpp globalDefinitions.hpp
217 freeChunk.hpp markOop.hpp
218 freeChunk.hpp memRegion.hpp
219 freeChunk.hpp mutex.hpp
220 freeChunk.hpp ostream.hpp
222 freeList.cpp freeBlockDictionary.hpp
223 freeList.cpp freeList.hpp
224 freeList.cpp globals.hpp
225 freeList.cpp mutex.hpp
226 freeList.cpp sharedHeap.hpp
227 freeList.cpp vmThread.hpp
229 freeList.hpp allocationStats.hpp
231 promotionInfo.cpp compactibleFreeListSpace.hpp
232 promotionInfo.cpp markOop.inline.hpp
233 promotionInfo.cpp oop.inline.hpp
234 promotionInfo.cpp promotionInfo.hpp
236 promotionInfo.hpp allocation.hpp
237 promotionInfo.hpp freeChunk.hpp
239 vmCMSOperations.cpp concurrentMarkSweepGeneration.inline.hpp
240 vmCMSOperations.cpp concurrentMarkSweepThread.hpp
241 vmCMSOperations.cpp dtrace.hpp
242 vmCMSOperations.cpp gcLocker.inline.hpp
243 vmCMSOperations.cpp isGCActiveMark.hpp
244 vmCMSOperations.cpp interfaceSupport.hpp
245 vmCMSOperations.cpp vmCMSOperations.hpp
247 vmCMSOperations.hpp concurrentMarkSweepGeneration.hpp
248 vmCMSOperations.hpp gcCause.hpp
249 vmCMSOperations.hpp vm_operations.hpp
250 vmCMSOperations.hpp vmGCOperations.hpp
252 yieldingWorkgroup.cpp yieldingWorkgroup.hpp
254 yieldingWorkgroup.hpp workgroup.hpp