--- old/src/share/vm/gc/g1/concurrentMarkThread.cpp 2016-02-10 09:36:31.235236041 +0100 +++ new/src/share/vm/gc/g1/concurrentMarkThread.cpp 2016-02-10 09:36:31.127236037 +0100 @@ -23,6 +23,7 @@ */ #include "precompiled.hpp" +#include "classfile/classLoaderData.hpp" #include "gc/g1/concurrentMarkThread.inline.hpp" #include "gc/g1/g1CollectedHeap.inline.hpp" #include "gc/g1/g1CollectorPolicy.hpp" @@ -133,6 +134,11 @@ HandleMark hm; double cycle_start = os::elapsedVTime(); + { + GCConcPhaseTimer(_cm, "Concurrent Clearing of Claimed Marks"); + ClassLoaderDataGraph::clear_claimed_marks(); + } + // We have to ensure that we finish scanning the root regions // before the next GC takes place. To ensure this we have to // make sure that we do not join the STS until the root regions @@ -141,8 +147,7 @@ // without the root regions have been scanned which would be a // correctness issue. - if (_cm->root_regions()->scan_in_progress()) { - assert(!cm()->has_aborted(), "Aborting before root region scanning is finished not supported."); + { GCConcPhaseTimer(_cm, "Concurrent Root Region Scanning"); _cm->scanRootRegions(); }