CLD claiming v2
109 _info(),
110 _complete(false) {
111 _info._high = NULL;
112 _info._low = NULL;
113 _info._context = NULL;
114 _info._system = OldObjectRoot::_system_undetermined;
115 _info._type = OldObjectRoot::_type_undetermined;
116
117 assert_locked_or_safepoint(Threads_lock);
118 do_roots();
119 }
120
121 bool complete() const {
122 return _complete;
123 }
124 };
125
126 bool ReferenceToRootClosure::do_cldg_roots() {
127 assert(!complete(), "invariant");
128 ReferenceLocateClosure rlc(_callback, OldObjectRoot::_class_loader_data, OldObjectRoot::_type_undetermined, NULL);
129 CLDToOopClosure cldt_closure(&rlc, ClassLoaderData::_claim_value_strong);
130 ClassLoaderDataGraph::always_strong_cld_do(&cldt_closure);
131 return rlc.complete();
132 }
133
134 bool ReferenceToRootClosure::do_object_synchronizer_roots() {
135 assert(!complete(), "invariant");
136 ReferenceLocateClosure rlc(_callback, OldObjectRoot::_object_synchronizer, OldObjectRoot::_type_undetermined, NULL);
137 ObjectSynchronizer::oops_do(&rlc);
138 return rlc.complete();
139 }
140
141 bool ReferenceToRootClosure::do_universe_roots() {
142 assert(!complete(), "invariant");
143 ReferenceLocateClosure rlc(_callback, OldObjectRoot::_universe, OldObjectRoot::_type_undetermined, NULL);
144 Universe::oops_do(&rlc);
145 return rlc.complete();
146 }
147
148 bool ReferenceToRootClosure::do_jni_handle_roots() {
|
109 _info(),
110 _complete(false) {
111 _info._high = NULL;
112 _info._low = NULL;
113 _info._context = NULL;
114 _info._system = OldObjectRoot::_system_undetermined;
115 _info._type = OldObjectRoot::_type_undetermined;
116
117 assert_locked_or_safepoint(Threads_lock);
118 do_roots();
119 }
120
121 bool complete() const {
122 return _complete;
123 }
124 };
125
126 bool ReferenceToRootClosure::do_cldg_roots() {
127 assert(!complete(), "invariant");
128 ReferenceLocateClosure rlc(_callback, OldObjectRoot::_class_loader_data, OldObjectRoot::_type_undetermined, NULL);
129 CLDToOopClosure cldt_closure(&rlc, ClassLoaderData::_claim_strong);
130 ClassLoaderDataGraph::always_strong_cld_do(&cldt_closure);
131 return rlc.complete();
132 }
133
134 bool ReferenceToRootClosure::do_object_synchronizer_roots() {
135 assert(!complete(), "invariant");
136 ReferenceLocateClosure rlc(_callback, OldObjectRoot::_object_synchronizer, OldObjectRoot::_type_undetermined, NULL);
137 ObjectSynchronizer::oops_do(&rlc);
138 return rlc.complete();
139 }
140
141 bool ReferenceToRootClosure::do_universe_roots() {
142 assert(!complete(), "invariant");
143 ReferenceLocateClosure rlc(_callback, OldObjectRoot::_universe, OldObjectRoot::_type_undetermined, NULL);
144 Universe::oops_do(&rlc);
145 return rlc.complete();
146 }
147
148 bool ReferenceToRootClosure::do_jni_handle_roots() {
|