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 }
|