--- old/src/share/vm/gc/g1/g1ConcurrentMark.hpp 2016-11-22 11:22:17.066094238 +0100 +++ new/src/share/vm/gc/g1/g1ConcurrentMark.hpp 2016-11-22 11:22:16.976091514 +0100 @@ -26,6 +26,7 @@ #define SHARE_VM_GC_G1_G1CONCURRENTMARK_HPP #include "classfile/javaClasses.hpp" +#include "gc/g1/g1ConcurrentMarkObjArrayProcessor.hpp" #include "gc/g1/g1RegionToSpaceMapper.hpp" #include "gc/g1/heapRegionSet.hpp" #include "gc/shared/taskqueue.hpp" @@ -706,11 +707,13 @@ words_scanned_period = 12*1024, // The regular clock call is called once the number of visited // references reaches this limit - refs_reached_period = 384, + refs_reached_period = 1024, // Initial value for the hash seed, used in the work stealing code init_hash_seed = 17 }; + G1CMObjArrayProcessor _objArray_processor; + uint _worker_id; G1CollectedHeap* _g1h; G1ConcurrentMark* _cm; @@ -827,7 +830,11 @@ template void process_grey_object(oop obj); + void process_object(oop obj); public: + // Apply the closure on the given area of the objArray. Return the number of words + // scanned. + inline size_t scan_objArray(objArrayOop const obj, MemRegion mr); // It resets the task; it should be called right at the beginning of // a marking phase. void reset(G1CMBitMap* _nextMarkBitMap);