comparison 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
comparison
equal deleted inserted replaced
1713:7fcd5f39bd7a 1716:be3f9c242c9d
1 // 1 //
2 // Copyright (c) 2004, 2009, Oracle and/or its affiliates. All rights reserved. 2 // Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
3 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 // 4 //
5 // This code is free software; you can redistribute it and/or modify it 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 6 // under the terms of the GNU General Public License version 2 only, as
7 // published by the Free Software Foundation. 7 // published by the Free Software Foundation.
31 binaryTreeDictionary.cpp space.inline.hpp 31 binaryTreeDictionary.cpp space.inline.hpp
32 binaryTreeDictionary.cpp spaceDecorator.hpp 32 binaryTreeDictionary.cpp spaceDecorator.hpp
33 33
34 binaryTreeDictionary.hpp freeBlockDictionary.hpp 34 binaryTreeDictionary.hpp freeBlockDictionary.hpp
35 binaryTreeDictionary.hpp freeList.hpp 35 binaryTreeDictionary.hpp freeList.hpp
36
37 blockOffsetTable.inline.hpp concurrentMarkSweepGeneration.hpp
36 38
37 cmsAdaptiveSizePolicy.cpp cmsAdaptiveSizePolicy.hpp 39 cmsAdaptiveSizePolicy.cpp cmsAdaptiveSizePolicy.hpp
38 cmsAdaptiveSizePolicy.cpp defNewGeneration.hpp 40 cmsAdaptiveSizePolicy.cpp defNewGeneration.hpp
39 cmsAdaptiveSizePolicy.cpp gcStats.hpp 41 cmsAdaptiveSizePolicy.cpp gcStats.hpp
40 cmsAdaptiveSizePolicy.cpp genCollectedHeap.hpp 42 cmsAdaptiveSizePolicy.cpp genCollectedHeap.hpp
83 cmsOopClosures.hpp genOopClosures.hpp 85 cmsOopClosures.hpp genOopClosures.hpp
84 86
85 cmsOopClosures.inline.hpp cmsOopClosures.hpp 87 cmsOopClosures.inline.hpp cmsOopClosures.hpp
86 cmsOopClosures.inline.hpp concurrentMarkSweepGeneration.hpp 88 cmsOopClosures.inline.hpp concurrentMarkSweepGeneration.hpp
87 89
88 cmsPermGen.cpp blockOffsetTable.hpp 90 cmsPermGen.cpp blockOffsetTable.inline.hpp
89 cmsPermGen.cpp cSpaceCounters.hpp 91 cmsPermGen.cpp cSpaceCounters.hpp
90 cmsPermGen.cpp cmsPermGen.hpp 92 cmsPermGen.cpp cmsPermGen.hpp
91 cmsPermGen.cpp collectedHeap.inline.hpp 93 cmsPermGen.cpp collectedHeap.inline.hpp
92 cmsPermGen.cpp compactPermGen.hpp 94 cmsPermGen.cpp compactPermGen.hpp
93 cmsPermGen.cpp concurrentMarkSweepGeneration.inline.hpp 95 cmsPermGen.cpp concurrentMarkSweepGeneration.inline.hpp
119 compactibleFreeListSpace.cpp spaceDecorator.hpp 121 compactibleFreeListSpace.cpp spaceDecorator.hpp
120 compactibleFreeListSpace.cpp universe.inline.hpp 122 compactibleFreeListSpace.cpp universe.inline.hpp
121 compactibleFreeListSpace.cpp vmThread.hpp 123 compactibleFreeListSpace.cpp vmThread.hpp
122 124
123 compactibleFreeListSpace.hpp binaryTreeDictionary.hpp 125 compactibleFreeListSpace.hpp binaryTreeDictionary.hpp
126 compactibleFreeListSpace.hpp blockOffsetTable.inline.hpp
124 compactibleFreeListSpace.hpp freeList.hpp 127 compactibleFreeListSpace.hpp freeList.hpp
125 compactibleFreeListSpace.hpp promotionInfo.hpp 128 compactibleFreeListSpace.hpp promotionInfo.hpp
126 compactibleFreeListSpace.hpp space.hpp 129 compactibleFreeListSpace.hpp space.hpp
127 130
128 compactingPermGenGen.cpp concurrentMarkSweepGeneration.inline.hpp 131 compactingPermGenGen.cpp concurrentMarkSweepGeneration.inline.hpp