src/share/vm/gc_implementation/parNew/parNewGeneration.hpp

Print this page




  52  protected:
  53   template <class T> void do_oop_work(T* p);
  54  public:
  55   ParKeepAliveClosure(ParScanWeakRefClosure* cl);
  56   virtual void do_oop(oop* p);
  57   virtual void do_oop(narrowOop* p);
  58 };
  59 
  60 // The state needed by thread performing parallel young-gen collection.
  61 class ParScanThreadState {
  62   friend class ParScanThreadStateSet;
  63  private:
  64   ObjToScanQueue *_work_queue;
  65   Stack<oop, mtGC>* const _overflow_stack;
  66 
  67   ParGCAllocBuffer _to_space_alloc_buffer;
  68 
  69   ParScanWithoutBarrierClosure         _to_space_closure; // scan_without_gc_barrier
  70   ParScanWithBarrierClosure            _old_gen_closure; // scan_with_gc_barrier
  71   ParRootScanWithoutBarrierClosure     _to_space_root_closure; // scan_root_without_gc_barrier
  72   // One of these two will be passed to process_strong_roots, which will
  73   // set its generation.  The first is for two-gen configs where the
  74   // old gen collects the perm gen; the second is for arbitrary configs.
  75   // The second isn't used right now (it used to be used for the train, an
  76   // incremental collector) but the declaration has been left as a reminder.
  77   ParRootScanWithBarrierTwoGensClosure _older_gen_closure;
  78   // This closure will always be bound to the old gen; it will be used
  79   // in evacuate_followers.
  80   ParRootScanWithBarrierTwoGensClosure _old_gen_root_closure; // scan_old_root_with_gc_barrier
  81   ParEvacuateFollowersClosure          _evacuate_followers;
  82   DefNewGeneration::IsAliveClosure     _is_alive_closure;
  83   ParScanWeakRefClosure                _scan_weak_ref_closure;
  84   ParKeepAliveClosure                  _keep_alive_closure;
  85 
  86 
  87   Space* _to_space;
  88   Space* to_space() { return _to_space; }
  89 
  90   ParNewGeneration* _young_gen;
  91   ParNewGeneration* young_gen() const { return _young_gen; }
  92 




  52  protected:
  53   template <class T> void do_oop_work(T* p);
  54  public:
  55   ParKeepAliveClosure(ParScanWeakRefClosure* cl);
  56   virtual void do_oop(oop* p);
  57   virtual void do_oop(narrowOop* p);
  58 };
  59 
  60 // The state needed by thread performing parallel young-gen collection.
  61 class ParScanThreadState {
  62   friend class ParScanThreadStateSet;
  63  private:
  64   ObjToScanQueue *_work_queue;
  65   Stack<oop, mtGC>* const _overflow_stack;
  66 
  67   ParGCAllocBuffer _to_space_alloc_buffer;
  68 
  69   ParScanWithoutBarrierClosure         _to_space_closure; // scan_without_gc_barrier
  70   ParScanWithBarrierClosure            _old_gen_closure; // scan_with_gc_barrier
  71   ParRootScanWithoutBarrierClosure     _to_space_root_closure; // scan_root_without_gc_barrier
  72   // One of these two will be passed to process_roots, which will
  73   // set its generation.  The first is for two-gen configs where the
  74   // old gen collects the perm gen; the second is for arbitrary configs.
  75   // The second isn't used right now (it used to be used for the train, an
  76   // incremental collector) but the declaration has been left as a reminder.
  77   ParRootScanWithBarrierTwoGensClosure _older_gen_closure;
  78   // This closure will always be bound to the old gen; it will be used
  79   // in evacuate_followers.
  80   ParRootScanWithBarrierTwoGensClosure _old_gen_root_closure; // scan_old_root_with_gc_barrier
  81   ParEvacuateFollowersClosure          _evacuate_followers;
  82   DefNewGeneration::IsAliveClosure     _is_alive_closure;
  83   ParScanWeakRefClosure                _scan_weak_ref_closure;
  84   ParKeepAliveClosure                  _keep_alive_closure;
  85 
  86 
  87   Space* _to_space;
  88   Space* to_space() { return _to_space; }
  89 
  90   ParNewGeneration* _young_gen;
  91   ParNewGeneration* young_gen() const { return _young_gen; }
  92