< prev index next >

src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp

Print this page




 722   void sample_eden(); // ... sample Eden space top
 723 
 724  private:
 725   // Support for parallelizing young gen rescan in CMS remark phase
 726   ParNewGeneration* _young_gen;  // the younger gen
 727 
 728   HeapWord** _top_addr;    // ... Top of Eden
 729   HeapWord** _end_addr;    // ... End of Eden
 730   Mutex*     _eden_chunk_lock;
 731   HeapWord** _eden_chunk_array; // ... Eden partitioning array
 732   size_t     _eden_chunk_index; // ... top (exclusive) of array
 733   size_t     _eden_chunk_capacity;  // ... max entries in array
 734 
 735   // Support for parallelizing survivor space rescan
 736   HeapWord** _survivor_chunk_array;
 737   size_t     _survivor_chunk_index;
 738   size_t     _survivor_chunk_capacity;
 739   size_t*    _cursor;
 740   ChunkArray* _survivor_plab_array;
 741 
 742   // A bounded minimum size of PLABs, should not return too small values since
 743   // this will affect the size of the data structures used for parallel young gen rescan
 744   size_t plab_sample_minimum_size();
 745 
 746   // Support for marking stack overflow handling
 747   bool take_from_overflow_list(size_t num, CMSMarkStack* to_stack);
 748   bool par_take_from_overflow_list(size_t num,
 749                                    OopTaskQueue* to_work_q,
 750                                    int no_of_gc_threads);
 751   void push_on_overflow_list(oop p);
 752   void par_push_on_overflow_list(oop p);
 753   // The following is, obviously, not, in general, "MT-stable"
 754   bool overflow_list_is_empty() const;
 755 
 756   void preserve_mark_if_necessary(oop p);
 757   void par_preserve_mark_if_necessary(oop p);
 758   void preserve_mark_work(oop p, markOop m);
 759   void restore_preserved_marks_if_any();
 760   NOT_PRODUCT(bool no_preserved_marks() const;)
 761   // In support of testing overflow code
 762   NOT_PRODUCT(int _overflow_counter;)
 763   NOT_PRODUCT(bool simulate_overflow();)       // Sequential
 764   NOT_PRODUCT(bool par_simulate_overflow();)   // MT version
 765 




 722   void sample_eden(); // ... sample Eden space top
 723 
 724  private:
 725   // Support for parallelizing young gen rescan in CMS remark phase
 726   ParNewGeneration* _young_gen;  // the younger gen
 727 
 728   HeapWord** _top_addr;    // ... Top of Eden
 729   HeapWord** _end_addr;    // ... End of Eden
 730   Mutex*     _eden_chunk_lock;
 731   HeapWord** _eden_chunk_array; // ... Eden partitioning array
 732   size_t     _eden_chunk_index; // ... top (exclusive) of array
 733   size_t     _eden_chunk_capacity;  // ... max entries in array
 734 
 735   // Support for parallelizing survivor space rescan
 736   HeapWord** _survivor_chunk_array;
 737   size_t     _survivor_chunk_index;
 738   size_t     _survivor_chunk_capacity;
 739   size_t*    _cursor;
 740   ChunkArray* _survivor_plab_array;
 741 




 742   // Support for marking stack overflow handling
 743   bool take_from_overflow_list(size_t num, CMSMarkStack* to_stack);
 744   bool par_take_from_overflow_list(size_t num,
 745                                    OopTaskQueue* to_work_q,
 746                                    int no_of_gc_threads);
 747   void push_on_overflow_list(oop p);
 748   void par_push_on_overflow_list(oop p);
 749   // The following is, obviously, not, in general, "MT-stable"
 750   bool overflow_list_is_empty() const;
 751 
 752   void preserve_mark_if_necessary(oop p);
 753   void par_preserve_mark_if_necessary(oop p);
 754   void preserve_mark_work(oop p, markOop m);
 755   void restore_preserved_marks_if_any();
 756   NOT_PRODUCT(bool no_preserved_marks() const;)
 757   // In support of testing overflow code
 758   NOT_PRODUCT(int _overflow_counter;)
 759   NOT_PRODUCT(bool simulate_overflow();)       // Sequential
 760   NOT_PRODUCT(bool par_simulate_overflow();)   // MT version
 761 


< prev index next >