src/hotspot/share/jfr/leakprofiler/checkpoint/rootResolver.cpp
changeset 55564 7df7c1f71ccf
parent 54786 ebf733a324d4
child 55740 b3ff56f955c8
equal deleted inserted replaced
55563:d56b192c73e9 55564:7df7c1f71ccf
   130 };
   130 };
   131 
   131 
   132 bool ReferenceToRootClosure::do_cldg_roots() {
   132 bool ReferenceToRootClosure::do_cldg_roots() {
   133   assert(!complete(), "invariant");
   133   assert(!complete(), "invariant");
   134   ReferenceLocateClosure rlc(_callback, OldObjectRoot::_class_loader_data, OldObjectRoot::_type_undetermined, NULL);
   134   ReferenceLocateClosure rlc(_callback, OldObjectRoot::_class_loader_data, OldObjectRoot::_type_undetermined, NULL);
   135   CLDToOopClosure cldt_closure(&rlc, ClassLoaderData::_claim_strong);
   135   CLDToOopClosure cldt_closure(&rlc, ClassLoaderData::_claim_none);
   136   ClassLoaderDataGraph::always_strong_cld_do(&cldt_closure);
   136   ClassLoaderDataGraph::always_strong_cld_do(&cldt_closure);
   137   return rlc.complete();
   137   return rlc.complete();
   138 }
   138 }
   139 
   139 
   140 bool ReferenceToRootClosure::do_object_synchronizer_roots() {
   140 bool ReferenceToRootClosure::do_object_synchronizer_roots() {
   433 
   433 
   434 class RootResolverMarkScope : public MarkScope {
   434 class RootResolverMarkScope : public MarkScope {
   435 };
   435 };
   436 
   436 
   437 void RootResolver::resolve(RootCallback& callback) {
   437 void RootResolver::resolve(RootCallback& callback) {
   438 
       
   439   // Need to clear cld claim bit before starting
       
   440   ClassLoaderDataGraph::clear_claimed_marks();
       
   441   RootResolverMarkScope mark_scope;
   438   RootResolverMarkScope mark_scope;
   442 
   439 
   443   // thread local roots
   440   // thread local roots
   444   ReferenceToThreadRootClosure rtrc(callback);
   441   ReferenceToThreadRootClosure rtrc(callback);
   445   if (rtrc.complete()) {
   442   if (rtrc.complete()) {