equal
deleted
inserted
replaced
27 |
27 |
28 #include "gc/cms/adaptiveFreeList.hpp" |
28 #include "gc/cms/adaptiveFreeList.hpp" |
29 #include "gc/cms/promotionInfo.hpp" |
29 #include "gc/cms/promotionInfo.hpp" |
30 #include "gc/shared/blockOffsetTable.hpp" |
30 #include "gc/shared/blockOffsetTable.hpp" |
31 #include "gc/shared/space.hpp" |
31 #include "gc/shared/space.hpp" |
|
32 #include "logging/log.hpp" |
32 #include "memory/binaryTreeDictionary.hpp" |
33 #include "memory/binaryTreeDictionary.hpp" |
33 #include "memory/freeList.hpp" |
34 #include "memory/freeList.hpp" |
34 |
35 |
35 // Classes in support of keeping track of promotions into a non-Contiguous |
36 // Classes in support of keeping track of promotions into a non-Contiguous |
36 // space, in this case a CompactibleFreeListSpace. |
37 // space, in this case a CompactibleFreeListSpace. |
273 void refillLinearAllocBlocksIfNeeded(); |
274 void refillLinearAllocBlocksIfNeeded(); |
274 |
275 |
275 void verify_objects_initialized() const; |
276 void verify_objects_initialized() const; |
276 |
277 |
277 // Statistics reporting helper functions |
278 // Statistics reporting helper functions |
278 void reportFreeListStatistics() const; |
279 void reportFreeListStatistics(const char* title) const; |
279 void reportIndexedFreeListStatistics() const; |
280 void reportIndexedFreeListStatistics(outputStream* st) const; |
280 size_t maxChunkSizeInIndexedFreeLists() const; |
281 size_t maxChunkSizeInIndexedFreeLists() const; |
281 size_t numFreeBlocksInIndexedFreeLists() const; |
282 size_t numFreeBlocksInIndexedFreeLists() const; |
282 // Accessor |
283 // Accessor |
283 HeapWord* unallocated_block() const { |
284 HeapWord* unallocated_block() const { |
284 if (BlockOffsetArrayUseUnallocatedBlock) { |
285 if (BlockOffsetArrayUseUnallocatedBlock) { |
448 |
449 |
449 // Iteration support for sweeping |
450 // Iteration support for sweeping |
450 void save_sweep_limit() { |
451 void save_sweep_limit() { |
451 _sweep_limit = BlockOffsetArrayUseUnallocatedBlock ? |
452 _sweep_limit = BlockOffsetArrayUseUnallocatedBlock ? |
452 unallocated_block() : end(); |
453 unallocated_block() : end(); |
453 if (CMSTraceSweeper) { |
454 log_develop_trace(gc, sweep)(">>>>> Saving sweep limit " PTR_FORMAT |
454 gclog_or_tty->print_cr(">>>>> Saving sweep limit " PTR_FORMAT |
455 " for space [" PTR_FORMAT "," PTR_FORMAT ") <<<<<<", |
455 " for space [" PTR_FORMAT "," PTR_FORMAT ") <<<<<<", |
456 p2i(_sweep_limit), p2i(bottom()), p2i(end())); |
456 p2i(_sweep_limit), p2i(bottom()), p2i(end())); |
|
457 } |
|
458 } |
457 } |
459 NOT_PRODUCT( |
458 NOT_PRODUCT( |
460 void clear_sweep_limit() { _sweep_limit = NULL; } |
459 void clear_sweep_limit() { _sweep_limit = NULL; } |
461 ) |
460 ) |
462 HeapWord* sweep_limit() { return _sweep_limit; } |
461 HeapWord* sweep_limit() { return _sweep_limit; } |