--- old/src/share/vm/gc_implementation/g1/concurrentMark.inline.hpp 2011-10-03 15:48:22.121436352 -0700 +++ new/src/share/vm/gc_implementation/g1/concurrentMark.inline.hpp 2011-10-03 15:48:21.918989668 -0700 @@ -84,7 +84,7 @@ HeapWord* objAddr = (HeapWord*) obj; assert(obj->is_oop_or_null(true /* ignore mark word */), "Error"); - if (_g1h->is_in_g1_reserved(objAddr)) { + if (_g1h->is_in_g1_reserved(objAddr)) { assert(obj != NULL, "null check is implicit"); if (!_nextMarkBitMap->isMarked(objAddr)) { // Only get the containing region if the object is not marked on the @@ -99,6 +99,9 @@ // we need to mark it first if (_nextMarkBitMap->parMark(objAddr)) { + // Update the task specific count data with obj. + _cm->add_to_count_data_for(obj, hr, _task_id); + // No OrderAccess:store_load() is needed. It is implicit in the // CAS done in parMark(objAddr) above HeapWord* global_finger = _cm->finger();