< prev index next >

src/share/vm/gc_implementation/g1/concurrentMark.cpp

Print this page
rev 7994 : [mq]: filter

*** 3402,3427 **** } gclog_or_tty->cr(); } #endif ! void CMTask::scan_object(oop obj) { assert(_nextMarkBitMap->isMarked((HeapWord*) obj), "invariant"); if (_cm->verbose_high()) { ! gclog_or_tty->print_cr("[%u] we're scanning object "PTR_FORMAT, _worker_id, p2i((void*) obj)); } size_t obj_size = obj->size(); _words_scanned += obj_size; obj->oop_iterate(_cm_oop_closure); statsOnly( ++_objs_scanned ); check_limits(); } // Closure for iteration over bitmaps class CMBitMapClosure : public BitMapClosure { private: // the bitmap that is being iterated over CMBitMap* _nextMarkBitMap; --- 3402,3434 ---- } gclog_or_tty->cr(); } #endif ! template<bool scan> ! inline void CMTask::process_grey_object(oop obj) { ! assert(scan || obj->is_typeArray(), "Skipping scan of grey non-typeArray"); assert(_nextMarkBitMap->isMarked((HeapWord*) obj), "invariant"); if (_cm->verbose_high()) { ! gclog_or_tty->print_cr("[%u] processing grey object " PTR_FORMAT, _worker_id, p2i((void*) obj)); } size_t obj_size = obj->size(); _words_scanned += obj_size; + if (scan) { obj->oop_iterate(_cm_oop_closure); + } statsOnly( ++_objs_scanned ); check_limits(); } + template void CMTask::process_grey_object<true>(oop); + template void CMTask::process_grey_object<false>(oop); + // Closure for iteration over bitmaps class CMBitMapClosure : public BitMapClosure { private: // the bitmap that is being iterated over CMBitMap* _nextMarkBitMap;
< prev index next >