comparison src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.inline.hpp @ 935:05f89f00a864

6798898: CMS: bugs related to class unloading Summary: Override should_remember_klasses() and remember_klass() as needed. Reviewed-by: ysr, jcoomes
author jmasa
date Mon, 24 Aug 2009 10:36:31 -0700
parents a61af66fc99e
children 8b46c4d82093
comparison
equal deleted inserted replaced
912:308762b2bf14 935:05f89f00a864
35 newOop->oop_iterate(&_par_pushAndMarkClosure); 35 newOop->oop_iterate(&_par_pushAndMarkClosure);
36 } 36 }
37 } 37 }
38 } 38 }
39 39
40 inline void PushOrMarkClosure::remember_klass(Klass* k) { 40 #ifndef PRODUCT
41 if (!_revisitStack->push(oop(k))) { 41 void KlassRememberingOopClosure::check_remember_klasses() const {
42 assert(_should_remember_klasses == must_remember_klasses(),
43 "Should remember klasses in this context.");
44 }
45 #endif
46
47 void KlassRememberingOopClosure::remember_klass(Klass* k) {
48 if (!_revisit_stack->push(oop(k))) {
42 fatal("Revisit stack overflow in PushOrMarkClosure"); 49 fatal("Revisit stack overflow in PushOrMarkClosure");
43 } 50 }
51 check_remember_klasses();
44 } 52 }
45 53
46 inline void Par_PushOrMarkClosure::remember_klass(Klass* k) { 54 void Par_KlassRememberingOopClosure::remember_klass(Klass* k) {
47 if (!_revisit_stack->par_push(oop(k))) { 55 if (!_revisit_stack->par_push(oop(k))) {
48 fatal("Revisit stack overflow in PushOrMarkClosure"); 56 fatal("Revisit stack overflow in PushOrMarkClosure");
49 } 57 }
58 check_remember_klasses();
50 } 59 }
51 60
52 inline void PushOrMarkClosure::do_yield_check() { 61 inline void PushOrMarkClosure::do_yield_check() {
53 _parent->do_yield_check(); 62 _parent->do_yield_check();
54 } 63 }