hotspot/src/share/vm/gc/cms/compactibleFreeListSpace.hpp
changeset 35061 be6025ebffea
parent 33587 c04a7462b0e6
child 35492 c8c0273e6b91
equal deleted inserted replaced
35060:382d0689141c 35061:be6025ebffea
    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; }