--- old/src/share/vm/gc/g1/concurrentMark.cpp 2015-08-06 15:19:58.671288241 +0200 +++ new/src/share/vm/gc/g1/concurrentMark.cpp 2015-08-06 15:19:58.559288245 +0200 @@ -3088,29 +3088,6 @@ } #endif -template -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(oop); -template void CMTask::process_grey_object(oop); - // Closure for iteration over bitmaps class CMBitMapClosure : public BitMapClosure { private: --- old/src/share/vm/gc/g1/concurrentMark.inline.hpp 2015-08-06 15:19:59.119288222 +0200 +++ new/src/share/vm/gc/g1/concurrentMark.inline.hpp 2015-08-06 15:19:58.995288227 +0200 @@ -299,6 +299,28 @@ return objAddr < global_finger; } +template +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(); +} + + + inline void CMTask::make_reference_grey(oop obj, HeapRegion* hr) { if (_cm->par_mark_and_count(obj, hr, _marked_bytes_array, _card_bm)) {