< prev index next >

src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp

Print this page
rev 48034 : 8191564: Refactor GC related servicability code into GC specific subclasses
Reviewed-by: ehelin, eosterlund


8099   assert(!res || !_mark_stack->isEmpty(),
8100          "If we took something, it should now be on our stack");
8101   return res;
8102 }
8103 
8104 size_t MarkDeadObjectsClosure::do_blk(HeapWord* addr) {
8105   size_t res = _sp->block_size_no_stall(addr, _collector);
8106   if (_sp->block_is_obj(addr)) {
8107     if (_live_bit_map->isMarked(addr)) {
8108       // It can't have been dead in a previous cycle
8109       guarantee(!_dead_bit_map->isMarked(addr), "No resurrection!");
8110     } else {
8111       _dead_bit_map->mark(addr);      // mark the dead object
8112     }
8113   }
8114   // Could be 0, if the block size could not be computed without stalling.
8115   return res;
8116 }
8117 
8118 TraceCMSMemoryManagerStats::TraceCMSMemoryManagerStats(CMSCollector::CollectorState phase, GCCause::Cause cause): TraceMemoryManagerStats() {
8119 
8120   switch (phase) {
8121     case CMSCollector::InitialMarking:
8122       initialize(true  /* fullGC */ ,
8123                  cause /* cause of the GC */,
8124                  true  /* recordGCBeginTime */,
8125                  true  /* recordPreGCUsage */,
8126                  false /* recordPeakUsage */,
8127                  false /* recordPostGCusage */,
8128                  true  /* recordAccumulatedGCTime */,
8129                  false /* recordGCEndTime */,
8130                  false /* countCollection */  );
8131       break;
8132 
8133     case CMSCollector::FinalMarking:
8134       initialize(true  /* fullGC */ ,
8135                  cause /* cause of the GC */,
8136                  false /* recordGCBeginTime */,
8137                  false /* recordPreGCUsage */,
8138                  false /* recordPeakUsage */,
8139                  false /* recordPostGCusage */,
8140                  true  /* recordAccumulatedGCTime */,
8141                  false /* recordGCEndTime */,
8142                  false /* countCollection */  );
8143       break;
8144 
8145     case CMSCollector::Sweeping:
8146       initialize(true  /* fullGC */ ,
8147                  cause /* cause of the GC */,
8148                  false /* recordGCBeginTime */,
8149                  false /* recordPreGCUsage */,
8150                  true  /* recordPeakUsage */,
8151                  true  /* recordPostGCusage */,
8152                  false /* recordAccumulatedGCTime */,
8153                  true  /* recordGCEndTime */,
8154                  true  /* countCollection */  );
8155       break;
8156 
8157     default:
8158       ShouldNotReachHere();
8159   }
8160 }


8099   assert(!res || !_mark_stack->isEmpty(),
8100          "If we took something, it should now be on our stack");
8101   return res;
8102 }
8103 
8104 size_t MarkDeadObjectsClosure::do_blk(HeapWord* addr) {
8105   size_t res = _sp->block_size_no_stall(addr, _collector);
8106   if (_sp->block_is_obj(addr)) {
8107     if (_live_bit_map->isMarked(addr)) {
8108       // It can't have been dead in a previous cycle
8109       guarantee(!_dead_bit_map->isMarked(addr), "No resurrection!");
8110     } else {
8111       _dead_bit_map->mark(addr);      // mark the dead object
8112     }
8113   }
8114   // Could be 0, if the block size could not be computed without stalling.
8115   return res;
8116 }
8117 
8118 TraceCMSMemoryManagerStats::TraceCMSMemoryManagerStats(CMSCollector::CollectorState phase, GCCause::Cause cause): TraceMemoryManagerStats() {
8119   GCMemoryManager* manager = CMSHeap::heap()->old_manager();
8120   switch (phase) {
8121     case CMSCollector::InitialMarking:
8122       initialize(manager /* GC manager */ ,
8123                  cause   /* cause of the GC */,
8124                  true    /* recordGCBeginTime */,
8125                  true    /* recordPreGCUsage */,
8126                  false   /* recordPeakUsage */,
8127                  false   /* recordPostGCusage */,
8128                  true    /* recordAccumulatedGCTime */,
8129                  false   /* recordGCEndTime */,
8130                  false   /* countCollection */  );
8131       break;
8132 
8133     case CMSCollector::FinalMarking:
8134       initialize(manager /* GC manager */ ,
8135                  cause   /* cause of the GC */,
8136                  false   /* recordGCBeginTime */,
8137                  false   /* recordPreGCUsage */,
8138                  false   /* recordPeakUsage */,
8139                  false   /* recordPostGCusage */,
8140                  true    /* recordAccumulatedGCTime */,
8141                  false   /* recordGCEndTime */,
8142                  false   /* countCollection */  );
8143       break;
8144 
8145     case CMSCollector::Sweeping:
8146       initialize(manager /* GC manager */ ,
8147                  cause   /* cause of the GC */,
8148                  false   /* recordGCBeginTime */,
8149                  false   /* recordPreGCUsage */,
8150                  true    /* recordPeakUsage */,
8151                  true    /* recordPostGCusage */,
8152                  false   /* recordAccumulatedGCTime */,
8153                  true    /* recordGCEndTime */,
8154                  true    /* countCollection */  );
8155       break;
8156 
8157     default:
8158       ShouldNotReachHere();
8159   }
8160 }
< prev index next >