< prev index next >

src/hotspot/share/jfr/leakprofiler/chains/rootSetClosure.cpp

CLD claiming v2

74 }                                                                                                                                    
75 
76 void RootSetClosure::closure_impl(const oop* reference, const oop pointee) {                                                         
77   if (!_edge_queue->is_full())  {                                                                                                    
78     _edge_queue->add(NULL, reference);                                                                                               
79   }                                                                                                                                  
80 }                                                                                                                                    
81 
82 void RootSetClosure::add_to_queue(EdgeQueue* edge_queue) {                                                                           
83   RootSetClosure rs(edge_queue);                                                                                                     
84   process_roots(&rs);                                                                                                                
85 }                                                                                                                                    
86 
87 class RootSetClosureMarkScope : public MarkScope {                                                                                   
88 };                                                                                                                                   
89 
90 void RootSetClosure::process_roots(OopClosure* closure) {                                                                            
91   SaveRestoreCLDClaimBits save_restore_cld_claim_bits;                                                                               
92   RootSetClosureMarkScope mark_scope;                                                                                                
93 
94   CLDToOopClosure cldt_closure(closure, ClassLoaderData::_claim_value_strong);                                                       
95   ClassLoaderDataGraph::always_strong_cld_do(&cldt_closure);                                                                         
96   CodeBlobToOopClosure blobs(closure, false);                                                                                        
97   Threads::oops_do(closure, &blobs);                                                                                                 
98   ObjectSynchronizer::oops_do(closure);                                                                                              
99   Universe::oops_do(closure);                                                                                                        
100   JNIHandles::oops_do(closure);                                                                                                      
101   JvmtiExport::oops_do(closure);                                                                                                     
102   SystemDictionary::oops_do(closure);                                                                                                
103   Management::oops_do(closure);                                                                                                      
104   StringTable::oops_do(closure);                                                                                                     
105   AOTLoader::oops_do(closure);                                                                                                       
106 }                                                                                                                                    

74 }
75 
76 void RootSetClosure::closure_impl(const oop* reference, const oop pointee) {
77   if (!_edge_queue->is_full())  {
78     _edge_queue->add(NULL, reference);
79   }
80 }
81 
82 void RootSetClosure::add_to_queue(EdgeQueue* edge_queue) {
83   RootSetClosure rs(edge_queue);
84   process_roots(&rs);
85 }
86 
87 class RootSetClosureMarkScope : public MarkScope {
88 };
89 
90 void RootSetClosure::process_roots(OopClosure* closure) {
91   SaveRestoreCLDClaimBits save_restore_cld_claim_bits;
92   RootSetClosureMarkScope mark_scope;
93 
94   CLDToOopClosure cldt_closure(closure, ClassLoaderData::_claim_strong);
95   ClassLoaderDataGraph::always_strong_cld_do(&cldt_closure);
96   CodeBlobToOopClosure blobs(closure, false);
97   Threads::oops_do(closure, &blobs);
98   ObjectSynchronizer::oops_do(closure);
99   Universe::oops_do(closure);
100   JNIHandles::oops_do(closure);
101   JvmtiExport::oops_do(closure);
102   SystemDictionary::oops_do(closure);
103   Management::oops_do(closure);
104   StringTable::oops_do(closure);
105   AOTLoader::oops_do(closure);
106 }
< prev index next >