Mercurial > hg > truffle
diff src/share/vm/gc_implementation/parNew/parNewGeneration.hpp @ 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/parNew/parNewGeneration.hpp Fri Apr 11 09:56:35 2008 -0400 +++ b/src/share/vm/gc_implementation/parNew/parNewGeneration.hpp Sun Apr 13 17:43:42 2008 -0400 @@ -33,7 +33,6 @@ // but they must be here to allow ParScanClosure::do_oop_work to be defined // in genOopClosures.inline.hpp. - typedef OopTaskQueue ObjToScanQueue; typedef OopTaskQueueSet ObjToScanQueueSet; @@ -41,15 +40,20 @@ const int PAR_STATS_ENABLED = 0; class ParKeepAliveClosure: public DefNewGeneration::KeepAliveClosure { + private: ParScanWeakRefClosure* _par_cl; + protected: + template <class T> void do_oop_work(T* p); public: ParKeepAliveClosure(ParScanWeakRefClosure* cl); - void do_oop(oop* p); + virtual void do_oop(oop* p); + virtual void do_oop(narrowOop* p); }; // The state needed by thread performing parallel young-gen collection. class ParScanThreadState { friend class ParScanThreadStateSet; + private: ObjToScanQueue *_work_queue; ParGCAllocBuffer _to_space_alloc_buffer; @@ -111,7 +115,7 @@ ObjToScanQueueSet* work_queue_set_, size_t desired_plab_sz_, ParallelTaskTerminator& term_); -public: + public: ageTable* age_table() {return &_ageTable;} ObjToScanQueue* work_queue() { return _work_queue; } @@ -195,13 +199,13 @@ double elapsed() { return os::elapsedTime() - _start; } - }; class ParNewGenTask: public AbstractGangTask { - ParNewGeneration* _gen; - Generation* _next_gen; - HeapWord* _young_old_boundary; + private: + ParNewGeneration* _gen; + Generation* _next_gen; + HeapWord* _young_old_boundary; class ParScanThreadStateSet* _state_set; public: @@ -216,35 +220,44 @@ }; class KeepAliveClosure: public DefNewGeneration::KeepAliveClosure { + protected: + template <class T> void do_oop_work(T* p); public: KeepAliveClosure(ScanWeakRefClosure* cl); - void do_oop(oop* p); + virtual void do_oop(oop* p); + virtual void do_oop(narrowOop* p); }; class EvacuateFollowersClosureGeneral: public VoidClosure { - GenCollectedHeap* _gch; - int _level; - OopsInGenClosure* _scan_cur_or_nonheap; - OopsInGenClosure* _scan_older; - public: - EvacuateFollowersClosureGeneral(GenCollectedHeap* gch, int level, - OopsInGenClosure* cur, - OopsInGenClosure* older); - void do_void(); + private: + GenCollectedHeap* _gch; + int _level; + OopsInGenClosure* _scan_cur_or_nonheap; + OopsInGenClosure* _scan_older; + public: + EvacuateFollowersClosureGeneral(GenCollectedHeap* gch, int level, + OopsInGenClosure* cur, + OopsInGenClosure* older); + virtual void do_void(); }; // Closure for scanning ParNewGeneration. // Same as ScanClosure, except does parallel GC barrier. class ScanClosureWithParBarrier: public ScanClosure { -public: + protected: + template <class T> void do_oop_work(T* p); + public: ScanClosureWithParBarrier(ParNewGeneration* g, bool gc_barrier); - void do_oop(oop* p); + virtual void do_oop(oop* p); + virtual void do_oop(narrowOop* p); }; // Implements AbstractRefProcTaskExecutor for ParNew. class ParNewRefProcTaskExecutor: public AbstractRefProcTaskExecutor { -public: - + private: + ParNewGeneration& _generation; + ParScanThreadStateSet& _state_set; + public: ParNewRefProcTaskExecutor(ParNewGeneration& generation, ParScanThreadStateSet& state_set) : _generation(generation), _state_set(state_set) @@ -255,9 +268,6 @@ virtual void execute(EnqueueTask& task); // Switch to single threaded mode. virtual void set_single_threaded_mode(); -private: - ParNewGeneration& _generation; - ParScanThreadStateSet& _state_set; }; @@ -269,6 +279,7 @@ friend class ParNewRefProcTaskExecutor; friend class ParScanThreadStateSet; + private: // XXX use a global constant instead of 64! struct ObjToScanQueuePadded { ObjToScanQueue work_queue; @@ -314,7 +325,7 @@ // the details of the policy. virtual void adjust_desired_tenuring_threshold(); -public: + public: ParNewGeneration(ReservedSpace rs, size_t initial_byte_size, int level); ~ParNewGeneration() {