Mercurial > hg > graal-jvmci-8
diff src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp @ 113:ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
Summary: Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv
Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
author | coleenp |
---|---|
date | Sun, 13 Apr 2008 17:43:42 -0400 |
parents | a61af66fc99e |
children | d1605aabd0a1 |
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp Fri Apr 11 09:56:35 2008 -0400 +++ b/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp Sun Apr 13 17:43:42 2008 -0400 @@ -34,15 +34,17 @@ private: PSPromotionManager* _promotion_manager; - public: - PSScavengeRootsClosure(PSPromotionManager* pm) : _promotion_manager(pm) { } - - virtual void do_oop(oop* p) { - if (PSScavenge::should_scavenge(*p)) { + 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); } }; void ScavengeRootsTask::do_it(GCTaskManager* manager, uint which) { @@ -135,7 +137,7 @@ int random_seed = 17; if (pm->depth_first()) { while(true) { - oop* p; + StarTask p; if (PSPromotionManager::steal_depth(which, &random_seed, p)) { #if PS_PM_STATS pm->increment_steals(p); @@ -164,8 +166,7 @@ } } } - guarantee(pm->stacks_empty(), - "stacks should be empty at this point"); + guarantee(pm->stacks_empty(), "stacks should be empty at this point"); } //