src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep

Mon, 02 Aug 2010 12:51:43 -0700

author
johnc
date
Mon, 02 Aug 2010 12:51:43 -0700
changeset 2060
2d160770d2e5
parent 2058
f6f3eef8a521
child 2071
be3f9c242c9d
permissions
-rw-r--r--

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

mercurial