void process_buffer () { assert((_hr_curr - _hr_buffer) == (_buffer_curr - _buffer), "the two lengths should be the same"); double start = os::elapsedTime(); HeapRegion** hr_curr = _hr_buffer; HeapRegion* hr_prev = NULL; for (StarTask* curr = _buffer; curr < _buffer_curr; ++curr) { HeapRegion* region = *hr_curr; if (region != hr_prev) { _oc->set_region(region); hr_prev = region; } if (curr->is_narrow()) { assert(UseCompressedOops, "Error"); _oc->do_oop((narrowOop*)(*curr)); } else { _oc->do_oop((oop*)(*curr)); } ++hr_curr; } _buffer_curr = _buffer; _hr_curr = _hr_buffer; _closure_app_seconds += (os::elapsedTime() - start); }
void process_buffer () { assert((_hr_curr - _hr_buffer) == (_buffer_curr - _buffer), "the two lengths should be the same"); double start = os::elapsedTime(); HeapRegion **hr_curr = _hr_buffer; HeapRegion *hr_prev = NULL; for (oop **curr = _buffer; curr < _buffer_curr; ++curr) { HeapRegion *region = *hr_curr; if (region != hr_prev) { _oc->set_region(region); hr_prev = region; } _oc->do_oop(*curr); ++hr_curr; } _buffer_curr = _buffer; _hr_curr = _hr_buffer; _closure_app_seconds += (os::elapsedTime() - start); }
template <class T> void do_oop_work(T* p) { oop obj = oopDesc::load_decode_heap_oop(p); if (_g1->obj_in_cs(obj)) _blk->do_oop(p); }