Mercurial > hg > graal-compiler
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 } |