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

changeset 1114
cea947c8a988
parent 1014
0fbdb4381b99
child 1130
becb17ad5e51
     1.1 --- a/src/share/vm/gc_implementation/parNew/parNewGeneration.hpp	Thu Mar 26 08:51:32 2009 -0700
     1.2 +++ b/src/share/vm/gc_implementation/parNew/parNewGeneration.hpp	Sat Mar 28 15:47:29 2009 -0700
     1.3 @@ -55,6 +55,7 @@
     1.4    friend class ParScanThreadStateSet;
     1.5   private:
     1.6    ObjToScanQueue *_work_queue;
     1.7 +  GrowableArray<oop>* _overflow_stack;
     1.8  
     1.9    ParGCAllocBuffer _to_space_alloc_buffer;
    1.10  
    1.11 @@ -79,6 +80,9 @@
    1.12    Space* _to_space;
    1.13    Space* to_space() { return _to_space; }
    1.14  
    1.15 +  ParNewGeneration* _young_gen;
    1.16 +  ParNewGeneration* young_gen() const { return _young_gen; }
    1.17 +
    1.18    Generation* _old_gen;
    1.19    Generation* old_gen() { return _old_gen; }
    1.20  
    1.21 @@ -134,6 +138,11 @@
    1.22    // Decrease queue size below "max_size".
    1.23    void trim_queues(int max_size);
    1.24  
    1.25 +  // Private overflow stack usage
    1.26 +  GrowableArray<oop>* overflow_stack() { return _overflow_stack; }
    1.27 +  bool take_from_overflow_stack();
    1.28 +  void push_on_overflow_stack(oop p);
    1.29 +
    1.30    // Is new_obj a candidate for scan_partial_array_and_push_remainder method.
    1.31    inline bool should_be_partially_scanned(oop new_obj, oop old_obj) const;
    1.32  
    1.33 @@ -378,13 +387,17 @@
    1.34    NOT_PRODUCT(int _overflow_counter;)
    1.35    NOT_PRODUCT(bool should_simulate_overflow();)
    1.36  
    1.37 +  // Accessor for overflow list
    1.38 +  oop overflow_list() { return _overflow_list; }
    1.39 +
    1.40    // Push the given (from-space) object on the global overflow list.
    1.41    void push_on_overflow_list(oop from_space_obj, ParScanThreadState* par_scan_state);
    1.42  
    1.43    // If the global overflow list is non-empty, move some tasks from it
    1.44 -  // onto "work_q" (which must be empty).  No more than 1/4 of the
    1.45 -  // max_elems of "work_q" are moved.
    1.46 +  // onto "work_q" (which need not be empty).  No more than 1/4 of the
    1.47 +  // available space on "work_q" is used.
    1.48    bool take_from_overflow_list(ParScanThreadState* par_scan_state);
    1.49 +  bool take_from_overflow_list_work(ParScanThreadState* par_scan_state);
    1.50  
    1.51    // The task queues to be used by parallel GC threads.
    1.52    ObjToScanQueueSet* task_queues() {

mercurial