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 }
|