equal
deleted
inserted
replaced
85 template <class T> inline void MarkSweep::mark_and_push(T* p) { |
85 template <class T> inline void MarkSweep::mark_and_push(T* p) { |
86 T heap_oop = oopDesc::load_heap_oop(p); |
86 T heap_oop = oopDesc::load_heap_oop(p); |
87 if (!oopDesc::is_null(heap_oop)) { |
87 if (!oopDesc::is_null(heap_oop)) { |
88 oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); |
88 oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); |
89 if (!obj->mark()->is_marked() && |
89 if (!obj->mark()->is_marked() && |
90 !is_archive_object(obj)) { |
90 !is_closed_archive_object(obj)) { |
91 mark_object(obj); |
91 mark_object(obj); |
92 _marking_stack.push(obj); |
92 _marking_stack.push(obj); |
93 } |
93 } |
94 } |
94 } |
95 } |
95 } |
182 "roots shouldn't be things within the heap"); |
182 "roots shouldn't be things within the heap"); |
183 T heap_oop = oopDesc::load_heap_oop(p); |
183 T heap_oop = oopDesc::load_heap_oop(p); |
184 if (!oopDesc::is_null(heap_oop)) { |
184 if (!oopDesc::is_null(heap_oop)) { |
185 oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); |
185 oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); |
186 if (!obj->mark()->is_marked() && |
186 if (!obj->mark()->is_marked() && |
187 !is_archive_object(obj)) { |
187 !is_closed_archive_object(obj)) { |
188 mark_object(obj); |
188 mark_object(obj); |
189 follow_object(obj); |
189 follow_object(obj); |
190 } |
190 } |
191 } |
191 } |
192 follow_stack(); |
192 follow_stack(); |
266 } |
266 } |
267 } |
267 } |
268 |
268 |
269 MarkSweep::IsAliveClosure MarkSweep::is_alive; |
269 MarkSweep::IsAliveClosure MarkSweep::is_alive; |
270 |
270 |
271 bool MarkSweep::IsAliveClosure::do_object_b(oop p) { return p->is_gc_marked() || is_archive_object(p); } |
271 bool MarkSweep::IsAliveClosure::do_object_b(oop p) { return p->is_gc_marked() || is_closed_archive_object(p); } |
272 |
272 |
273 MarkSweep::KeepAliveClosure MarkSweep::keep_alive; |
273 MarkSweep::KeepAliveClosure MarkSweep::keep_alive; |
274 |
274 |
275 void MarkSweep::KeepAliveClosure::do_oop(oop* p) { MarkSweep::KeepAliveClosure::do_oop_work(p); } |
275 void MarkSweep::KeepAliveClosure::do_oop(oop* p) { MarkSweep::KeepAliveClosure::do_oop_work(p); } |
276 void MarkSweep::KeepAliveClosure::do_oop(narrowOop* p) { MarkSweep::KeepAliveClosure::do_oop_work(p); } |
276 void MarkSweep::KeepAliveClosure::do_oop(narrowOop* p) { MarkSweep::KeepAliveClosure::do_oop_work(p); } |