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 |