Mercurial > hg > graal-compiler
diff src/share/vm/gc_implementation/parallelScavenge/psScavenge.inline.hpp @ 2379:b099aaf51bf8
6962931: move interned strings out of the perm gen
Reviewed-by: never, coleenp, ysr, jwilhelm
author | jcoomes |
---|---|
date | Tue, 22 Mar 2011 13:36:33 -0700 |
parents | f95d63e2154a |
children | 1d1603768966 |
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/parallelScavenge/psScavenge.inline.hpp Mon Mar 21 18:38:00 2011 -0700 +++ b/src/share/vm/gc_implementation/parallelScavenge/psScavenge.inline.hpp Tue Mar 22 13:36:33 2011 -0700 @@ -86,4 +86,21 @@ } } +class PSScavengeRootsClosure: public OopClosure { + private: + PSPromotionManager* _promotion_manager; + + protected: + template <class T> void do_oop_work(T *p) { + if (PSScavenge::should_scavenge(p)) { + // We never card mark roots, maybe call a func without test? + PSScavenge::copy_and_push_safe_barrier(_promotion_manager, p); + } + } + public: + PSScavengeRootsClosure(PSPromotionManager* pm) : _promotion_manager(pm) { } + void do_oop(oop* p) { PSScavengeRootsClosure::do_oop_work(p); } + void do_oop(narrowOop* p) { PSScavengeRootsClosure::do_oop_work(p); } +}; + #endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSSCAVENGE_INLINE_HPP