30 #include "gc_interface/collectedHeap.inline.hpp"
31 #include "oops/methodData.hpp"
32 #include "oops/objArrayKlass.inline.hpp"
33 #include "oops/oop.inline.hpp"
34
35 uint MarkSweep::_total_invocations = 0;
36
37 Stack<oop, mtGC> MarkSweep::_marking_stack;
38 Stack<ObjArrayTask, mtGC> MarkSweep::_objarray_stack;
39
40 Stack<oop, mtGC> MarkSweep::_preserved_oop_stack;
41 Stack<markOop, mtGC> MarkSweep::_preserved_mark_stack;
42 size_t MarkSweep::_preserved_count = 0;
43 size_t MarkSweep::_preserved_count_max = 0;
44 PreservedMark* MarkSweep::_preserved_marks = NULL;
45 ReferenceProcessor* MarkSweep::_ref_processor = NULL;
46 STWGCTimer* MarkSweep::_gc_timer = NULL;
47 SerialOldTracer* MarkSweep::_gc_tracer = NULL;
48
49 MarkSweep::FollowRootClosure MarkSweep::follow_root_closure;
50 CodeBlobToOopClosure MarkSweep::follow_code_root_closure(&MarkSweep::follow_root_closure, /*do_marking=*/ true);
51
52 void MarkSweep::FollowRootClosure::do_oop(oop* p) { follow_root(p); }
53 void MarkSweep::FollowRootClosure::do_oop(narrowOop* p) { follow_root(p); }
54
55 MarkSweep::MarkAndPushClosure MarkSweep::mark_and_push_closure;
56 MarkSweep::FollowKlassClosure MarkSweep::follow_klass_closure;
57 MarkSweep::AdjustKlassClosure MarkSweep::adjust_klass_closure;
58
59 void MarkSweep::MarkAndPushClosure::do_oop(oop* p) { mark_and_push(p); }
60 void MarkSweep::MarkAndPushClosure::do_oop(narrowOop* p) { mark_and_push(p); }
61
62 void MarkSweep::FollowKlassClosure::do_klass(Klass* klass) {
63 klass->oops_do(&MarkSweep::mark_and_push_closure);
64 }
65 void MarkSweep::AdjustKlassClosure::do_klass(Klass* klass) {
66 klass->oops_do(&MarkSweep::adjust_pointer_closure);
67 }
68
69 void MarkSweep::follow_class_loader(ClassLoaderData* cld) {
70 cld->oops_do(&MarkSweep::mark_and_push_closure, &MarkSweep::follow_klass_closure, true);
|
30 #include "gc_interface/collectedHeap.inline.hpp"
31 #include "oops/methodData.hpp"
32 #include "oops/objArrayKlass.inline.hpp"
33 #include "oops/oop.inline.hpp"
34
35 uint MarkSweep::_total_invocations = 0;
36
37 Stack<oop, mtGC> MarkSweep::_marking_stack;
38 Stack<ObjArrayTask, mtGC> MarkSweep::_objarray_stack;
39
40 Stack<oop, mtGC> MarkSweep::_preserved_oop_stack;
41 Stack<markOop, mtGC> MarkSweep::_preserved_mark_stack;
42 size_t MarkSweep::_preserved_count = 0;
43 size_t MarkSweep::_preserved_count_max = 0;
44 PreservedMark* MarkSweep::_preserved_marks = NULL;
45 ReferenceProcessor* MarkSweep::_ref_processor = NULL;
46 STWGCTimer* MarkSweep::_gc_timer = NULL;
47 SerialOldTracer* MarkSweep::_gc_tracer = NULL;
48
49 MarkSweep::FollowRootClosure MarkSweep::follow_root_closure;
50
51 void MarkSweep::FollowRootClosure::do_oop(oop* p) { follow_root(p); }
52 void MarkSweep::FollowRootClosure::do_oop(narrowOop* p) { follow_root(p); }
53
54 MarkSweep::MarkAndPushClosure MarkSweep::mark_and_push_closure;
55 MarkSweep::FollowKlassClosure MarkSweep::follow_klass_closure;
56 MarkSweep::AdjustKlassClosure MarkSweep::adjust_klass_closure;
57
58 void MarkSweep::MarkAndPushClosure::do_oop(oop* p) { mark_and_push(p); }
59 void MarkSweep::MarkAndPushClosure::do_oop(narrowOop* p) { mark_and_push(p); }
60
61 void MarkSweep::FollowKlassClosure::do_klass(Klass* klass) {
62 klass->oops_do(&MarkSweep::mark_and_push_closure);
63 }
64 void MarkSweep::AdjustKlassClosure::do_klass(Klass* klass) {
65 klass->oops_do(&MarkSweep::adjust_pointer_closure);
66 }
67
68 void MarkSweep::follow_class_loader(ClassLoaderData* cld) {
69 cld->oops_do(&MarkSweep::mark_and_push_closure, &MarkSweep::follow_klass_closure, true);
|