Mercurial > hg > truffle
comparison src/share/vm/gc_implementation/shared/markSweep.cpp @ 20278:2c6ef90f030a
8049421: G1 Class Unloading after completing a concurrent mark cycle
Reviewed-by: tschatzl, ehelin, brutisso, coleenp, roland, iveresov
Contributed-by: stefan.karlsson@oracle.com, mikael.gerdin@oracle.com
author | stefank |
---|---|
date | Mon, 07 Jul 2014 10:12:40 +0200 |
parents | 7426d8d76305 |
children | 7848fc12602b |
comparison
equal
deleted
inserted
replaced
20277:882004b9e7e1 | 20278: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()) { |