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
duke@435 | 1 | // |
trims@1907 | 2 | // Copyright (c) 2004, 2009, Oracle and/or its affiliates. All rights reserved. |
duke@435 | 3 | // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
duke@435 | 4 | // |
duke@435 | 5 | // This code is free software; you can redistribute it and/or modify it |
duke@435 | 6 | // under the terms of the GNU General Public License version 2 only, as |
duke@435 | 7 | // published by the Free Software Foundation. |
duke@435 | 8 | // |
duke@435 | 9 | // This code is distributed in the hope that it will be useful, but WITHOUT |
duke@435 | 10 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
duke@435 | 11 | // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
duke@435 | 12 | // version 2 for more details (a copy is included in the LICENSE file that |
duke@435 | 13 | // accompanied this code). |
duke@435 | 14 | // |
duke@435 | 15 | // You should have received a copy of the GNU General Public License version |
duke@435 | 16 | // 2 along with this work; if not, write to the Free Software Foundation, |
duke@435 | 17 | // Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
duke@435 | 18 | // |
trims@1907 | 19 | // Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
trims@1907 | 20 | // or visit www.oracle.com if you need additional information or have any |
trims@1907 | 21 | // questions. |
duke@435 | 22 | // |
duke@435 | 23 | // |
duke@435 | 24 | |
duke@435 | 25 | // NOTE: DO NOT CHANGE THIS COPYRIGHT TO NEW STYLE - IT WILL BREAK makeDeps! |
duke@435 | 26 | |
duke@435 | 27 | binaryTreeDictionary.cpp allocationStats.hpp |
duke@435 | 28 | binaryTreeDictionary.cpp binaryTreeDictionary.hpp |
duke@435 | 29 | binaryTreeDictionary.cpp globals.hpp |
duke@435 | 30 | binaryTreeDictionary.cpp ostream.hpp |
coleenp@963 | 31 | binaryTreeDictionary.cpp space.inline.hpp |
jmasa@698 | 32 | binaryTreeDictionary.cpp spaceDecorator.hpp |
duke@435 | 33 | |
duke@435 | 34 | binaryTreeDictionary.hpp freeBlockDictionary.hpp |
duke@435 | 35 | binaryTreeDictionary.hpp freeList.hpp |
duke@435 | 36 | |
duke@435 | 37 | cmsAdaptiveSizePolicy.cpp cmsAdaptiveSizePolicy.hpp |
duke@435 | 38 | cmsAdaptiveSizePolicy.cpp defNewGeneration.hpp |
duke@435 | 39 | cmsAdaptiveSizePolicy.cpp gcStats.hpp |
duke@435 | 40 | cmsAdaptiveSizePolicy.cpp genCollectedHeap.hpp |
duke@435 | 41 | cmsAdaptiveSizePolicy.cpp thread.hpp |
duke@435 | 42 | cmsAdaptiveSizePolicy.cpp os_<os_family>.inline.hpp |
duke@435 | 43 | |
duke@435 | 44 | cmsAdaptiveSizePolicy.hpp adaptiveSizePolicy.hpp |
duke@435 | 45 | cmsAdaptiveSizePolicy.hpp timer.hpp |
duke@435 | 46 | |
duke@435 | 47 | cmsCollectorPolicy.cpp arguments.hpp |
duke@435 | 48 | cmsCollectorPolicy.cpp cardTableRS.hpp |
duke@435 | 49 | cmsCollectorPolicy.cpp cmsAdaptiveSizePolicy.hpp |
duke@435 | 50 | cmsCollectorPolicy.cpp cmsGCAdaptivePolicyCounters.hpp |
duke@435 | 51 | cmsCollectorPolicy.cpp cmsCollectorPolicy.hpp |
duke@435 | 52 | cmsCollectorPolicy.cpp collectorPolicy.hpp |
duke@435 | 53 | cmsCollectorPolicy.cpp gcLocker.inline.hpp |
duke@435 | 54 | cmsCollectorPolicy.cpp genCollectedHeap.hpp |
duke@435 | 55 | cmsCollectorPolicy.cpp gcPolicyCounters.hpp |
duke@435 | 56 | cmsCollectorPolicy.cpp generationSpec.hpp |
duke@435 | 57 | cmsCollectorPolicy.cpp globals_extension.hpp |
duke@435 | 58 | cmsCollectorPolicy.cpp handles.inline.hpp |
duke@435 | 59 | cmsCollectorPolicy.cpp java.hpp |
duke@435 | 60 | cmsCollectorPolicy.cpp parNewGeneration.hpp |
duke@435 | 61 | cmsCollectorPolicy.cpp space.hpp |
duke@435 | 62 | cmsCollectorPolicy.cpp thread_<os_family>.inline.hpp |
duke@435 | 63 | cmsCollectorPolicy.cpp universe.hpp |
duke@435 | 64 | cmsCollectorPolicy.cpp vmGCOperations.hpp |
duke@435 | 65 | cmsCollectorPolicy.cpp vmThread.hpp |
duke@435 | 66 | |
duke@435 | 67 | cmsCollectorPolicy.hpp collectorPolicy.hpp |
duke@435 | 68 | |
duke@435 | 69 | cmsGCAdaptivePolicyCounters.cpp cmsGCAdaptivePolicyCounters.hpp |
duke@435 | 70 | cmsGCAdaptivePolicyCounters.cpp resourceArea.hpp |
duke@435 | 71 | |
duke@435 | 72 | cmsGCAdaptivePolicyCounters.hpp cmsAdaptiveSizePolicy.hpp |
duke@435 | 73 | cmsGCAdaptivePolicyCounters.hpp gcAdaptivePolicyCounters.hpp |
duke@435 | 74 | cmsGCAdaptivePolicyCounters.hpp gcStats.hpp |
duke@435 | 75 | cmsGCAdaptivePolicyCounters.hpp perfData.hpp |
duke@435 | 76 | |
duke@435 | 77 | cmsLockVerifier.cpp cmsLockVerifier.hpp |
duke@435 | 78 | cmsLockVerifier.cpp concurrentMarkSweepThread.hpp |
duke@435 | 79 | cmsLockVerifier.cpp vmThread.hpp |
duke@435 | 80 | |
duke@435 | 81 | cmsLockVerifier.hpp mutex.hpp |
duke@435 | 82 | |
duke@435 | 83 | cmsOopClosures.hpp genOopClosures.hpp |
duke@435 | 84 | |
duke@435 | 85 | cmsOopClosures.inline.hpp cmsOopClosures.hpp |
duke@435 | 86 | cmsOopClosures.inline.hpp concurrentMarkSweepGeneration.hpp |
duke@435 | 87 | |
duke@435 | 88 | cmsPermGen.cpp blockOffsetTable.hpp |
duke@435 | 89 | cmsPermGen.cpp cSpaceCounters.hpp |
duke@435 | 90 | cmsPermGen.cpp cmsPermGen.hpp |
duke@435 | 91 | cmsPermGen.cpp collectedHeap.inline.hpp |
duke@435 | 92 | cmsPermGen.cpp compactPermGen.hpp |
duke@435 | 93 | cmsPermGen.cpp concurrentMarkSweepGeneration.inline.hpp |
duke@435 | 94 | cmsPermGen.cpp genCollectedHeap.hpp |
duke@435 | 95 | cmsPermGen.cpp generation.inline.hpp |
duke@435 | 96 | cmsPermGen.cpp java.hpp |
duke@435 | 97 | cmsPermGen.cpp oop.inline.hpp |
duke@435 | 98 | cmsPermGen.cpp permGen.hpp |
duke@435 | 99 | cmsPermGen.cpp universe.hpp |
duke@435 | 100 | |
duke@435 | 101 | cmsPermGen.hpp concurrentMarkSweepGeneration.hpp |
duke@435 | 102 | cmsPermGen.hpp permGen.hpp |
duke@435 | 103 | |
duke@435 | 104 | compactibleFreeListSpace.cpp allocation.inline.hpp |
duke@435 | 105 | compactibleFreeListSpace.cpp blockOffsetTable.inline.hpp |
duke@435 | 106 | compactibleFreeListSpace.cpp cmsLockVerifier.hpp |
duke@435 | 107 | compactibleFreeListSpace.cpp collectedHeap.hpp |
duke@435 | 108 | compactibleFreeListSpace.cpp compactibleFreeListSpace.hpp |
duke@435 | 109 | compactibleFreeListSpace.cpp concurrentMarkSweepGeneration.inline.hpp |
duke@435 | 110 | compactibleFreeListSpace.cpp concurrentMarkSweepThread.hpp |
duke@435 | 111 | compactibleFreeListSpace.cpp copy.hpp |
duke@435 | 112 | compactibleFreeListSpace.cpp globals.hpp |
duke@435 | 113 | compactibleFreeListSpace.cpp handles.inline.hpp |
duke@435 | 114 | compactibleFreeListSpace.cpp init.hpp |
duke@435 | 115 | compactibleFreeListSpace.cpp java.hpp |
duke@435 | 116 | compactibleFreeListSpace.cpp liveRange.hpp |
duke@435 | 117 | compactibleFreeListSpace.cpp oop.inline.hpp |
duke@435 | 118 | compactibleFreeListSpace.cpp resourceArea.hpp |
jmasa@698 | 119 | compactibleFreeListSpace.cpp spaceDecorator.hpp |
duke@435 | 120 | compactibleFreeListSpace.cpp universe.inline.hpp |
duke@435 | 121 | compactibleFreeListSpace.cpp vmThread.hpp |
duke@435 | 122 | |
duke@435 | 123 | compactibleFreeListSpace.hpp binaryTreeDictionary.hpp |
duke@435 | 124 | compactibleFreeListSpace.hpp freeList.hpp |
ysr@1876 | 125 | compactibleFreeListSpace.hpp promotionInfo.hpp |
duke@435 | 126 | compactibleFreeListSpace.hpp space.hpp |
duke@435 | 127 | |
duke@435 | 128 | compactingPermGenGen.cpp concurrentMarkSweepGeneration.inline.hpp |
duke@435 | 129 | |
duke@435 | 130 | concurrentMarkSweepGeneration.cpp cardTableRS.hpp |
duke@435 | 131 | concurrentMarkSweepGeneration.cpp cmsAdaptiveSizePolicy.hpp |
duke@435 | 132 | concurrentMarkSweepGeneration.cpp cmsCollectorPolicy.hpp |
duke@435 | 133 | concurrentMarkSweepGeneration.cpp cmsGCAdaptivePolicyCounters.hpp |
duke@435 | 134 | concurrentMarkSweepGeneration.cpp cmsOopClosures.inline.hpp |
duke@435 | 135 | concurrentMarkSweepGeneration.cpp codeCache.hpp |
duke@435 | 136 | concurrentMarkSweepGeneration.cpp collectedHeap.inline.hpp |
duke@435 | 137 | concurrentMarkSweepGeneration.cpp collectorCounters.hpp |
duke@435 | 138 | concurrentMarkSweepGeneration.cpp collectorPolicy.hpp |
duke@435 | 139 | concurrentMarkSweepGeneration.cpp compactibleFreeListSpace.hpp |
duke@435 | 140 | concurrentMarkSweepGeneration.cpp concurrentMarkSweepGeneration.inline.hpp |
duke@435 | 141 | concurrentMarkSweepGeneration.cpp concurrentMarkSweepThread.hpp |
duke@435 | 142 | concurrentMarkSweepGeneration.cpp gcLocker.inline.hpp |
duke@435 | 143 | concurrentMarkSweepGeneration.cpp genCollectedHeap.hpp |
duke@435 | 144 | concurrentMarkSweepGeneration.cpp genMarkSweep.hpp |
duke@435 | 145 | concurrentMarkSweepGeneration.cpp genOopClosures.inline.hpp |
duke@435 | 146 | concurrentMarkSweepGeneration.cpp globals_extension.hpp |
duke@435 | 147 | concurrentMarkSweepGeneration.cpp handles.inline.hpp |
duke@435 | 148 | concurrentMarkSweepGeneration.cpp isGCActiveMark.hpp |
jmasa@1370 | 149 | concurrentMarkSweepGeneration.cpp iterator.hpp |
duke@435 | 150 | concurrentMarkSweepGeneration.cpp java.hpp |
duke@435 | 151 | concurrentMarkSweepGeneration.cpp jvmtiExport.hpp |
kevinw@2058 | 152 | concurrentMarkSweepGeneration.cpp memoryService.hpp |
duke@435 | 153 | concurrentMarkSweepGeneration.cpp oop.inline.hpp |
duke@435 | 154 | concurrentMarkSweepGeneration.cpp parNewGeneration.hpp |
duke@435 | 155 | concurrentMarkSweepGeneration.cpp referencePolicy.hpp |
duke@435 | 156 | concurrentMarkSweepGeneration.cpp resourceArea.hpp |
duke@435 | 157 | concurrentMarkSweepGeneration.cpp runtimeService.hpp |
duke@435 | 158 | concurrentMarkSweepGeneration.cpp symbolTable.hpp |
duke@435 | 159 | concurrentMarkSweepGeneration.cpp systemDictionary.hpp |
duke@435 | 160 | concurrentMarkSweepGeneration.cpp vmCMSOperations.hpp |
duke@435 | 161 | concurrentMarkSweepGeneration.cpp vmThread.hpp |
duke@435 | 162 | |
ysr@777 | 163 | concurrentMarkSweepGeneration.hpp bitMap.inline.hpp |
duke@435 | 164 | concurrentMarkSweepGeneration.hpp freeBlockDictionary.hpp |
duke@435 | 165 | concurrentMarkSweepGeneration.hpp gSpaceCounters.hpp |
duke@435 | 166 | concurrentMarkSweepGeneration.hpp gcStats.hpp |
duke@435 | 167 | concurrentMarkSweepGeneration.hpp generation.hpp |
duke@435 | 168 | concurrentMarkSweepGeneration.hpp generationCounters.hpp |
kevinw@2058 | 169 | concurrentMarkSweepGeneration.hpp memoryService.hpp |
duke@435 | 170 | concurrentMarkSweepGeneration.hpp mutexLocker.hpp |
duke@435 | 171 | concurrentMarkSweepGeneration.hpp taskqueue.hpp |
duke@435 | 172 | concurrentMarkSweepGeneration.hpp virtualspace.hpp |
duke@435 | 173 | concurrentMarkSweepGeneration.hpp yieldingWorkgroup.hpp |
duke@435 | 174 | |
duke@435 | 175 | concurrentMarkSweepGeneration.inline.hpp cmsLockVerifier.hpp |
duke@435 | 176 | concurrentMarkSweepGeneration.inline.hpp compactibleFreeListSpace.hpp |
duke@435 | 177 | concurrentMarkSweepGeneration.inline.hpp concurrentMarkSweepGeneration.hpp |
duke@435 | 178 | concurrentMarkSweepGeneration.inline.hpp concurrentMarkSweepThread.hpp |
duke@435 | 179 | concurrentMarkSweepGeneration.inline.hpp defNewGeneration.hpp |
duke@435 | 180 | concurrentMarkSweepGeneration.inline.hpp gcUtil.hpp |
duke@435 | 181 | |
duke@435 | 182 | concurrentMarkSweepThread.cpp concurrentMarkSweepGeneration.inline.hpp |
duke@435 | 183 | concurrentMarkSweepThread.cpp concurrentMarkSweepThread.hpp |
duke@435 | 184 | concurrentMarkSweepThread.cpp genCollectedHeap.hpp |
duke@435 | 185 | concurrentMarkSweepThread.cpp init.hpp |
duke@435 | 186 | concurrentMarkSweepThread.cpp instanceRefKlass.hpp |
duke@435 | 187 | concurrentMarkSweepThread.cpp interfaceSupport.hpp |
duke@435 | 188 | concurrentMarkSweepThread.cpp java.hpp |
duke@435 | 189 | concurrentMarkSweepThread.cpp javaCalls.hpp |
duke@435 | 190 | concurrentMarkSweepThread.cpp mutexLocker.hpp |
duke@435 | 191 | concurrentMarkSweepThread.cpp oop.inline.hpp |
duke@435 | 192 | concurrentMarkSweepThread.cpp os.hpp |
duke@435 | 193 | concurrentMarkSweepThread.cpp systemDictionary.hpp |
duke@435 | 194 | concurrentMarkSweepThread.cpp vmThread.hpp |
duke@435 | 195 | |
duke@435 | 196 | concurrentMarkSweepThread.hpp concurrentGCThread.hpp |
duke@435 | 197 | concurrentMarkSweepThread.hpp concurrentMarkSweepGeneration.hpp |
duke@435 | 198 | concurrentMarkSweepThread.hpp thread_<os_family>.inline.hpp |
duke@435 | 199 | |
duke@435 | 200 | freeBlockDictionary.cpp freeBlockDictionary.hpp |
duke@435 | 201 | freeBlockDictionary.cpp thread_<os_family>.inline.hpp |
duke@435 | 202 | |
duke@435 | 203 | freeBlockDictionary.hpp allocation.hpp |
duke@435 | 204 | freeBlockDictionary.hpp debug.hpp |
coleenp@622 | 205 | freeBlockDictionary.hpp freeChunk.hpp |
duke@435 | 206 | freeBlockDictionary.hpp globalDefinitions.hpp |
duke@435 | 207 | freeBlockDictionary.hpp memRegion.hpp |
duke@435 | 208 | freeBlockDictionary.hpp mutex.hpp |
duke@435 | 209 | freeBlockDictionary.hpp ostream.hpp |
duke@435 | 210 | |
duke@435 | 211 | freeChunk.cpp copy.hpp |
duke@435 | 212 | freeChunk.cpp freeBlockDictionary.hpp |
duke@435 | 213 | |
coleenp@622 | 214 | freeChunk.hpp allocation.hpp |
coleenp@622 | 215 | freeChunk.hpp debug.hpp |
coleenp@622 | 216 | freeChunk.hpp globalDefinitions.hpp |
coleenp@622 | 217 | freeChunk.hpp markOop.hpp |
coleenp@622 | 218 | freeChunk.hpp memRegion.hpp |
coleenp@622 | 219 | freeChunk.hpp mutex.hpp |
coleenp@622 | 220 | freeChunk.hpp ostream.hpp |
coleenp@622 | 221 | |
duke@435 | 222 | freeList.cpp freeBlockDictionary.hpp |
duke@435 | 223 | freeList.cpp freeList.hpp |
duke@435 | 224 | freeList.cpp globals.hpp |
duke@435 | 225 | freeList.cpp mutex.hpp |
duke@435 | 226 | freeList.cpp sharedHeap.hpp |
ysr@1580 | 227 | freeList.cpp vmThread.hpp |
duke@435 | 228 | |
duke@435 | 229 | freeList.hpp allocationStats.hpp |
duke@435 | 230 | |
ysr@1876 | 231 | promotionInfo.cpp compactibleFreeListSpace.hpp |
ysr@1876 | 232 | promotionInfo.cpp markOop.inline.hpp |
ysr@1876 | 233 | promotionInfo.cpp oop.inline.hpp |
ysr@1876 | 234 | promotionInfo.cpp promotionInfo.hpp |
ysr@1876 | 235 | |
ysr@1876 | 236 | promotionInfo.hpp allocation.hpp |
ysr@1876 | 237 | promotionInfo.hpp freeChunk.hpp |
ysr@1876 | 238 | |
duke@435 | 239 | vmCMSOperations.cpp concurrentMarkSweepGeneration.inline.hpp |
duke@435 | 240 | vmCMSOperations.cpp concurrentMarkSweepThread.hpp |
duke@435 | 241 | vmCMSOperations.cpp dtrace.hpp |
duke@435 | 242 | vmCMSOperations.cpp gcLocker.inline.hpp |
duke@435 | 243 | vmCMSOperations.cpp isGCActiveMark.hpp |
duke@435 | 244 | vmCMSOperations.cpp interfaceSupport.hpp |
duke@435 | 245 | vmCMSOperations.cpp vmCMSOperations.hpp |
duke@435 | 246 | |
duke@435 | 247 | vmCMSOperations.hpp concurrentMarkSweepGeneration.hpp |
duke@435 | 248 | vmCMSOperations.hpp gcCause.hpp |
duke@435 | 249 | vmCMSOperations.hpp vm_operations.hpp |
duke@435 | 250 | vmCMSOperations.hpp vmGCOperations.hpp |
duke@435 | 251 | |
duke@435 | 252 | yieldingWorkgroup.cpp yieldingWorkgroup.hpp |
duke@435 | 253 | |
duke@435 | 254 | yieldingWorkgroup.hpp workgroup.hpp |