Mercurial > hg > graal-compiler
diff src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp @ 941:8b46c4d82093
4957990: Perm heap bloat in JVM
Summary: Treat ProfileData in MDO's as a source of weak, not strong, roots. Fixes the bug for stop-world collection -- the case of concurrent collection will be fixed separately.
Reviewed-by: jcoomes, jmasa, kvn, never
author | ysr |
---|---|
date | Wed, 02 Sep 2009 00:04:29 -0700 |
parents | 05f89f00a864 |
children | 54b3b351d6f9 |
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp Mon Aug 31 05:27:29 2009 -0700 +++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp Wed Sep 02 00:04:29 2009 -0700 @@ -155,6 +155,12 @@ Prefetch::style prefetch_style() { return Prefetch::do_read; } + // In support of class unloading + virtual const bool should_remember_mdo() const { + return false; + // return _should_remember_klasses; + } + virtual void remember_mdo(DataLayout* v); }; // In the parallel case, the revisit stack, the bit map and the @@ -185,6 +191,12 @@ Prefetch::style prefetch_style() { return Prefetch::do_read; } + // In support of class unloading + virtual const bool should_remember_mdo() const { + return false; + // return _should_remember_klasses; + } + virtual void remember_mdo(DataLayout* v); }; // The non-parallel version (the parallel version appears further below). @@ -303,6 +315,13 @@ virtual void do_oop(narrowOop* p); inline void do_oop_nv(oop* p) { PushOrMarkClosure::do_oop_work(p); } inline void do_oop_nv(narrowOop* p) { PushOrMarkClosure::do_oop_work(p); } + // In support of class unloading + virtual const bool should_remember_mdo() const { + return false; + // return _should_remember_klasses; + } + virtual void remember_mdo(DataLayout* v); + // Deal with a stack overflow condition void handle_stack_overflow(HeapWord* lost); private: @@ -340,6 +359,13 @@ virtual void do_oop(narrowOop* p); inline void do_oop_nv(oop* p) { Par_PushOrMarkClosure::do_oop_work(p); } inline void do_oop_nv(narrowOop* p) { Par_PushOrMarkClosure::do_oop_work(p); } + // In support of class unloading + virtual const bool should_remember_mdo() const { + return false; + // return _should_remember_klasses; + } + virtual void remember_mdo(DataLayout* v); + // Deal with a stack overflow condition void handle_stack_overflow(HeapWord* lost); private: