comparison src/share/vm/gc_implementation/shared/markSweep.cpp @ 20804:7848fc12602b

Merge with jdk8u40-b25
author Gilles Duboscq <gilles.m.duboscq@oracle.com>
date Tue, 07 Apr 2015 14:58:49 +0200
parents 52b4284cb496 2c6ef90f030a
children
comparison
equal deleted inserted replaced
20184:84105dcdb05b 20804:7848fc12602b
47 ReferenceProcessor* MarkSweep::_ref_processor = NULL; 47 ReferenceProcessor* MarkSweep::_ref_processor = NULL;
48 STWGCTimer* MarkSweep::_gc_timer = NULL; 48 STWGCTimer* MarkSweep::_gc_timer = NULL;
49 SerialOldTracer* MarkSweep::_gc_tracer = NULL; 49 SerialOldTracer* MarkSweep::_gc_tracer = NULL;
50 50
51 MarkSweep::FollowRootClosure MarkSweep::follow_root_closure; 51 MarkSweep::FollowRootClosure MarkSweep::follow_root_closure;
52 CodeBlobToOopClosure MarkSweep::follow_code_root_closure(&MarkSweep::follow_root_closure, /*do_marking=*/ true);
53 52
54 void MarkSweep::FollowRootClosure::do_oop(oop* p) { follow_root(p); } 53 void MarkSweep::FollowRootClosure::do_oop(oop* p) { follow_root(p); }
55 void MarkSweep::FollowRootClosure::do_oop(narrowOop* p) { follow_root(p); } 54 void MarkSweep::FollowRootClosure::do_oop(narrowOop* p) { follow_root(p); }
56 55
57 MarkSweep::MarkAndPushClosure MarkSweep::mark_and_push_closure; 56 MarkSweep::MarkAndPushClosure MarkSweep::mark_and_push_closure;
58 MarkSweep::FollowKlassClosure MarkSweep::follow_klass_closure; 57 CLDToOopClosure MarkSweep::follow_cld_closure(&mark_and_push_closure);
59 MarkSweep::AdjustKlassClosure MarkSweep::adjust_klass_closure; 58 CLDToOopClosure MarkSweep::adjust_cld_closure(&adjust_pointer_closure);
60 59
61 void MarkSweep::MarkAndPushClosure::do_oop(oop* p) { mark_and_push(p); } 60 void MarkSweep::MarkAndPushClosure::do_oop(oop* p) { mark_and_push(p); }
62 void MarkSweep::MarkAndPushClosure::do_oop(narrowOop* p) { mark_and_push(p); } 61 void MarkSweep::MarkAndPushClosure::do_oop(narrowOop* p) { mark_and_push(p); }
63 62
64 void MarkSweep::FollowKlassClosure::do_klass(Klass* klass) {
65 klass->oops_do(&MarkSweep::mark_and_push_closure);
66 }
67 void MarkSweep::AdjustKlassClosure::do_klass(Klass* klass) {
68 klass->oops_do(&MarkSweep::adjust_pointer_closure);
69 }
70
71 void MarkSweep::follow_class_loader(ClassLoaderData* cld) { 63 void MarkSweep::follow_class_loader(ClassLoaderData* cld) {
72 cld->oops_do(&MarkSweep::mark_and_push_closure, &MarkSweep::follow_klass_closure, true); 64 MarkSweep::follow_cld_closure.do_cld(cld);
73 } 65 }
74 66
75 void MarkSweep::follow_stack() { 67 void MarkSweep::follow_stack() {
76 do { 68 do {
77 while (!_marking_stack.is_empty()) { 69 while (!_marking_stack.is_empty()) {