Mercurial > hg > truffle
comparison src/share/vm/includeDB_core @ 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 | 126ea7725993 |
children | d5d065957597 8b10f48633dc |
comparison
equal
deleted
inserted
replaced
1713:7fcd5f39bd7a | 1716:be3f9c242c9d |
---|---|
223 arrayOop.cpp objArrayOop.hpp | 223 arrayOop.cpp objArrayOop.hpp |
224 arrayOop.cpp oop.inline.hpp | 224 arrayOop.cpp oop.inline.hpp |
225 arrayOop.cpp symbolOop.hpp | 225 arrayOop.cpp symbolOop.hpp |
226 | 226 |
227 arrayOop.hpp oop.hpp | 227 arrayOop.hpp oop.hpp |
228 arrayOop.hpp universe.hpp | |
229 arrayOop.hpp universe.inline.hpp | 228 arrayOop.hpp universe.inline.hpp |
230 | 229 |
231 assembler.cpp assembler.hpp | 230 assembler.cpp assembler.hpp |
232 assembler.cpp assembler.inline.hpp | 231 assembler.cpp assembler.inline.hpp |
233 assembler.cpp assembler_<arch>.inline.hpp | 232 assembler.cpp assembler_<arch>.inline.hpp |
234 assembler.cpp codeBuffer.hpp | 233 assembler.cpp codeBuffer.hpp |
235 assembler.cpp icache.hpp | 234 assembler.cpp icache.hpp |
236 assembler.cpp os.hpp | 235 assembler.cpp os.hpp |
237 | 236 |
238 assembler.hpp allocation.hpp | 237 assembler.hpp allocation.hpp |
239 assembler.hpp allocation.inline.hpp | |
240 assembler.hpp debug.hpp | 238 assembler.hpp debug.hpp |
241 assembler.hpp growableArray.hpp | 239 assembler.hpp growableArray.hpp |
242 assembler.hpp oopRecorder.hpp | 240 assembler.hpp oopRecorder.hpp |
243 assembler.hpp register_<arch>.hpp | 241 assembler.hpp register_<arch>.hpp |
244 assembler.hpp relocInfo.hpp | 242 assembler.hpp relocInfo.hpp |
328 blockOffsetTable.cpp blockOffsetTable.inline.hpp | 326 blockOffsetTable.cpp blockOffsetTable.inline.hpp |
329 blockOffsetTable.cpp collectedHeap.inline.hpp | 327 blockOffsetTable.cpp collectedHeap.inline.hpp |
330 blockOffsetTable.cpp iterator.hpp | 328 blockOffsetTable.cpp iterator.hpp |
331 blockOffsetTable.cpp java.hpp | 329 blockOffsetTable.cpp java.hpp |
332 blockOffsetTable.cpp oop.inline.hpp | 330 blockOffsetTable.cpp oop.inline.hpp |
333 blockOffsetTable.cpp space.hpp | 331 blockOffsetTable.cpp space.inline.hpp |
334 blockOffsetTable.cpp universe.hpp | 332 blockOffsetTable.cpp universe.hpp |
335 | 333 |
336 blockOffsetTable.hpp globalDefinitions.hpp | 334 blockOffsetTable.hpp globalDefinitions.hpp |
337 blockOffsetTable.hpp memRegion.hpp | 335 blockOffsetTable.hpp memRegion.hpp |
338 blockOffsetTable.hpp virtualspace.hpp | 336 blockOffsetTable.hpp virtualspace.hpp |
339 | 337 |
340 blockOffsetTable.inline.hpp blockOffsetTable.hpp | 338 blockOffsetTable.inline.hpp blockOffsetTable.hpp |
339 blockOffsetTable.inline.hpp safepoint.hpp | |
341 blockOffsetTable.inline.hpp space.hpp | 340 blockOffsetTable.inline.hpp space.hpp |
342 | 341 |
343 bytecode.cpp bytecode.hpp | 342 bytecode.cpp bytecode.hpp |
344 bytecode.cpp constantPoolOop.hpp | 343 bytecode.cpp constantPoolOop.hpp |
345 bytecode.cpp fieldType.hpp | 344 bytecode.cpp fieldType.hpp |
1805 generateOopMap.hpp oopsHierarchy.hpp | 1804 generateOopMap.hpp oopsHierarchy.hpp |
1806 generateOopMap.hpp signature.hpp | 1805 generateOopMap.hpp signature.hpp |
1807 generateOopMap.hpp universe.inline.hpp | 1806 generateOopMap.hpp universe.inline.hpp |
1808 | 1807 |
1809 generation.cpp allocation.inline.hpp | 1808 generation.cpp allocation.inline.hpp |
1810 generation.cpp blockOffsetTable.hpp | 1809 generation.cpp blockOffsetTable.inline.hpp |
1811 generation.cpp cardTableRS.hpp | 1810 generation.cpp cardTableRS.hpp |
1812 generation.cpp collectedHeap.inline.hpp | 1811 generation.cpp collectedHeap.inline.hpp |
1813 generation.cpp copy.hpp | 1812 generation.cpp copy.hpp |
1814 generation.cpp events.hpp | 1813 generation.cpp events.hpp |
1815 generation.cpp gcLocker.inline.hpp | 1814 generation.cpp gcLocker.inline.hpp |
3434 perfMemory_<os_family>.cpp os_<os_family>.inline.hpp | 3433 perfMemory_<os_family>.cpp os_<os_family>.inline.hpp |
3435 perfMemory_<os_family>.cpp perfMemory.hpp | 3434 perfMemory_<os_family>.cpp perfMemory.hpp |
3436 perfMemory_<os_family>.cpp resourceArea.hpp | 3435 perfMemory_<os_family>.cpp resourceArea.hpp |
3437 perfMemory_<os_family>.cpp vmSymbols.hpp | 3436 perfMemory_<os_family>.cpp vmSymbols.hpp |
3438 | 3437 |
3439 permGen.cpp blockOffsetTable.hpp | 3438 permGen.cpp blockOffsetTable.inline.hpp |
3440 permGen.cpp cSpaceCounters.hpp | 3439 permGen.cpp cSpaceCounters.hpp |
3441 permGen.cpp collectedHeap.inline.hpp | 3440 permGen.cpp collectedHeap.inline.hpp |
3442 permGen.cpp compactPermGen.hpp | 3441 permGen.cpp compactPermGen.hpp |
3443 permGen.cpp genCollectedHeap.hpp | 3442 permGen.cpp genCollectedHeap.hpp |
3444 permGen.cpp generation.inline.hpp | 3443 permGen.cpp generation.inline.hpp |
3803 sizes.cpp sizes.hpp | 3802 sizes.cpp sizes.hpp |
3804 | 3803 |
3805 sizes.hpp allocation.hpp | 3804 sizes.hpp allocation.hpp |
3806 sizes.hpp globalDefinitions.hpp | 3805 sizes.hpp globalDefinitions.hpp |
3807 | 3806 |
3808 space.cpp blockOffsetTable.hpp | 3807 space.cpp blockOffsetTable.inline.hpp |
3809 space.cpp copy.hpp | 3808 space.cpp copy.hpp |
3810 space.cpp defNewGeneration.hpp | 3809 space.cpp defNewGeneration.hpp |
3811 space.cpp genCollectedHeap.hpp | 3810 space.cpp genCollectedHeap.hpp |
3812 space.cpp globalDefinitions.hpp | 3811 space.cpp globalDefinitions.hpp |
3813 space.cpp java.hpp | 3812 space.cpp java.hpp |
3833 space.hpp os_<os_family>.inline.hpp | 3832 space.hpp os_<os_family>.inline.hpp |
3834 space.hpp prefetch.hpp | 3833 space.hpp prefetch.hpp |
3835 space.hpp watermark.hpp | 3834 space.hpp watermark.hpp |
3836 space.hpp workgroup.hpp | 3835 space.hpp workgroup.hpp |
3837 | 3836 |
3838 space.inline.hpp blockOffsetTable.inline.hpp | |
3839 space.inline.hpp collectedHeap.hpp | 3837 space.inline.hpp collectedHeap.hpp |
3840 space.inline.hpp safepoint.hpp | 3838 space.inline.hpp safepoint.hpp |
3841 space.inline.hpp space.hpp | 3839 space.inline.hpp space.hpp |
3842 space.inline.hpp universe.hpp | 3840 space.inline.hpp universe.hpp |
3843 | 3841 |