src/share/vm/gc_implementation/shared/markSweep.cpp

changeset 6992
2c6ef90f030a
parent 6971
7426d8d76305
child 7535
7ae4e26cb1e0
equal deleted inserted replaced
6991:882004b9e7e1 6992:2c6ef90f030a
52 52
53 void MarkSweep::FollowRootClosure::do_oop(oop* p) { follow_root(p); } 53 void MarkSweep::FollowRootClosure::do_oop(oop* p) { follow_root(p); }
54 void MarkSweep::FollowRootClosure::do_oop(narrowOop* p) { follow_root(p); } 54 void MarkSweep::FollowRootClosure::do_oop(narrowOop* p) { follow_root(p); }
55 55
56 MarkSweep::MarkAndPushClosure MarkSweep::mark_and_push_closure; 56 MarkSweep::MarkAndPushClosure MarkSweep::mark_and_push_closure;
57 MarkSweep::FollowKlassClosure MarkSweep::follow_klass_closure; 57 CLDToOopClosure MarkSweep::follow_cld_closure(&mark_and_push_closure);
58 MarkSweep::AdjustKlassClosure MarkSweep::adjust_klass_closure; 58 CLDToOopClosure MarkSweep::adjust_cld_closure(&adjust_pointer_closure);
59 59
60 void MarkSweep::MarkAndPushClosure::do_oop(oop* p) { mark_and_push(p); } 60 void MarkSweep::MarkAndPushClosure::do_oop(oop* p) { mark_and_push(p); }
61 void MarkSweep::MarkAndPushClosure::do_oop(narrowOop* p) { mark_and_push(p); } 61 void MarkSweep::MarkAndPushClosure::do_oop(narrowOop* p) { mark_and_push(p); }
62 62
63 void MarkSweep::FollowKlassClosure::do_klass(Klass* klass) {
64 klass->oops_do(&MarkSweep::mark_and_push_closure);
65 }
66 void MarkSweep::AdjustKlassClosure::do_klass(Klass* klass) {
67 klass->oops_do(&MarkSweep::adjust_pointer_closure);
68 }
69
70 void MarkSweep::follow_class_loader(ClassLoaderData* cld) { 63 void MarkSweep::follow_class_loader(ClassLoaderData* cld) {
71 cld->oops_do(&MarkSweep::mark_and_push_closure, &MarkSweep::follow_klass_closure, true); 64 MarkSweep::follow_cld_closure.do_cld(cld);
72 } 65 }
73 66
74 void MarkSweep::follow_stack() { 67 void MarkSweep::follow_stack() {
75 do { 68 do {
76 while (!_marking_stack.is_empty()) { 69 while (!_marking_stack.is_empty()) {

mercurial