Mercurial > hg > graal-compiler
comparison src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp @ 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 |
comparison
equal
deleted
inserted
replaced
2378:924777755fad | 2379:b099aaf51bf8 |
---|---|
28 #include "gc_implementation/parallelScavenge/cardTableExtension.hpp" | 28 #include "gc_implementation/parallelScavenge/cardTableExtension.hpp" |
29 #include "gc_implementation/parallelScavenge/gcTaskManager.hpp" | 29 #include "gc_implementation/parallelScavenge/gcTaskManager.hpp" |
30 #include "gc_implementation/parallelScavenge/psMarkSweep.hpp" | 30 #include "gc_implementation/parallelScavenge/psMarkSweep.hpp" |
31 #include "gc_implementation/parallelScavenge/psPromotionManager.hpp" | 31 #include "gc_implementation/parallelScavenge/psPromotionManager.hpp" |
32 #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp" | 32 #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp" |
33 #include "gc_implementation/parallelScavenge/psScavenge.hpp" | 33 #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp" |
34 #include "gc_implementation/parallelScavenge/psTasks.hpp" | 34 #include "gc_implementation/parallelScavenge/psTasks.hpp" |
35 #include "memory/iterator.hpp" | 35 #include "memory/iterator.hpp" |
36 #include "memory/universe.hpp" | 36 #include "memory/universe.hpp" |
37 #include "oops/oop.inline.hpp" | 37 #include "oops/oop.inline.hpp" |
38 #include "oops/oop.psgc.inline.hpp" | 38 #include "oops/oop.psgc.inline.hpp" |
43 #include "utilities/taskqueue.hpp" | 43 #include "utilities/taskqueue.hpp" |
44 | 44 |
45 // | 45 // |
46 // ScavengeRootsTask | 46 // ScavengeRootsTask |
47 // | 47 // |
48 | |
49 // Define before use | |
50 class PSScavengeRootsClosure: public OopClosure { | |
51 private: | |
52 PSPromotionManager* _promotion_manager; | |
53 | |
54 protected: | |
55 template <class T> void do_oop_work(T *p) { | |
56 if (PSScavenge::should_scavenge(p)) { | |
57 // We never card mark roots, maybe call a func without test? | |
58 PSScavenge::copy_and_push_safe_barrier(_promotion_manager, p); | |
59 } | |
60 } | |
61 public: | |
62 PSScavengeRootsClosure(PSPromotionManager* pm) : _promotion_manager(pm) { } | |
63 void do_oop(oop* p) { PSScavengeRootsClosure::do_oop_work(p); } | |
64 void do_oop(narrowOop* p) { PSScavengeRootsClosure::do_oop_work(p); } | |
65 }; | |
66 | 48 |
67 void ScavengeRootsTask::do_it(GCTaskManager* manager, uint which) { | 49 void ScavengeRootsTask::do_it(GCTaskManager* manager, uint which) { |
68 assert(Universe::heap()->is_gc_active(), "called outside gc"); | 50 assert(Universe::heap()->is_gc_active(), "called outside gc"); |
69 | 51 |
70 PSPromotionManager* pm = PSPromotionManager::gc_thread_promotion_manager(which); | 52 PSPromotionManager* pm = PSPromotionManager::gc_thread_promotion_manager(which); |