79 void MarkSweep::follow_class_loader(ClassLoaderData* cld) { |
79 void MarkSweep::follow_class_loader(ClassLoaderData* cld) { |
80 cld->oops_do(&MarkSweep::mark_and_push_closure, &MarkSweep::follow_klass_closure, true); |
80 cld->oops_do(&MarkSweep::mark_and_push_closure, &MarkSweep::follow_klass_closure, true); |
81 } |
81 } |
82 |
82 |
83 void MarkSweep::adjust_class_loader(ClassLoaderData* cld) { |
83 void MarkSweep::adjust_class_loader(ClassLoaderData* cld) { |
84 cld->oops_do(&MarkSweep::adjust_root_pointer_closure, &MarkSweep::adjust_klass_closure, true); |
84 cld->oops_do(&MarkSweep::adjust_pointer_closure, &MarkSweep::adjust_klass_closure, true); |
85 } |
85 } |
86 |
86 |
87 |
87 |
88 void MarkSweep::follow_stack() { |
88 void MarkSweep::follow_stack() { |
89 do { |
89 do { |
119 _preserved_mark_stack.push(mark); |
119 _preserved_mark_stack.push(mark); |
120 _preserved_oop_stack.push(obj); |
120 _preserved_oop_stack.push(obj); |
121 } |
121 } |
122 } |
122 } |
123 |
123 |
124 MarkSweep::AdjustPointerClosure MarkSweep::adjust_root_pointer_closure(true); |
124 MarkSweep::AdjustPointerClosure MarkSweep::adjust_pointer_closure; |
125 MarkSweep::AdjustPointerClosure MarkSweep::adjust_pointer_closure(false); |
|
126 |
125 |
127 void MarkSweep::AdjustPointerClosure::do_oop(oop* p) { adjust_pointer(p, _is_root); } |
126 void MarkSweep::AdjustPointerClosure::do_oop(oop* p) { adjust_pointer(p); } |
128 void MarkSweep::AdjustPointerClosure::do_oop(narrowOop* p) { adjust_pointer(p, _is_root); } |
127 void MarkSweep::AdjustPointerClosure::do_oop(narrowOop* p) { adjust_pointer(p); } |
129 |
128 |
130 void MarkSweep::adjust_marks() { |
129 void MarkSweep::adjust_marks() { |
131 assert( _preserved_oop_stack.size() == _preserved_mark_stack.size(), |
130 assert( _preserved_oop_stack.size() == _preserved_mark_stack.size(), |
132 "inconsistent preserved oop stacks"); |
131 "inconsistent preserved oop stacks"); |
133 |
132 |