71
72 // The singleton Gen Remembered Set.
73 GenRemSet* _rem_set;
74
75 // The generational collector policy.
76 GenCollectorPolicy* _gen_policy;
77
78 // Indicates that the most recent previous incremental collection failed.
79 // The flag is cleared when an action is taken that might clear the
80 // condition that caused that incremental collection to fail.
81 bool _incremental_collection_failed;
82
83 // In support of ExplicitGCInvokesConcurrent functionality
84 unsigned int _full_collections_completed;
85
86 // Data structure for claiming the (potentially) parallel tasks in
87 // (gen-specific) roots processing.
88 SubTasksDone* _gen_process_roots_tasks;
89 SubTasksDone* gen_process_roots_tasks() { return _gen_process_roots_tasks; }
90
91 void collect_generation(Generation* gen, bool full, size_t size, bool is_tlab,
92 bool run_verification, bool clear_soft_refs);
93
94 // In block contents verification, the number of header words to skip
95 NOT_PRODUCT(static size_t _skip_header_HeapWords;)
96
97 protected:
98 // Helper functions for allocation
99 HeapWord* attempt_allocation(size_t size,
100 bool is_tlab,
101 bool first_only);
102
103 // Helper function for two callbacks below.
104 // Considers collection of the first max_level+1 generations.
105 void do_collection(bool full,
106 bool clear_all_soft_refs,
107 size_t size,
108 bool is_tlab,
109 int max_level);
110
111 // Callback from VM_GenCollectForAllocation operation.
112 // This function does everything necessary/possible to satisfy an
|
71
72 // The singleton Gen Remembered Set.
73 GenRemSet* _rem_set;
74
75 // The generational collector policy.
76 GenCollectorPolicy* _gen_policy;
77
78 // Indicates that the most recent previous incremental collection failed.
79 // The flag is cleared when an action is taken that might clear the
80 // condition that caused that incremental collection to fail.
81 bool _incremental_collection_failed;
82
83 // In support of ExplicitGCInvokesConcurrent functionality
84 unsigned int _full_collections_completed;
85
86 // Data structure for claiming the (potentially) parallel tasks in
87 // (gen-specific) roots processing.
88 SubTasksDone* _gen_process_roots_tasks;
89 SubTasksDone* gen_process_roots_tasks() { return _gen_process_roots_tasks; }
90
91 // Collects the given generation.
92 void collect_generation(Generation* gen, bool full, size_t size, bool is_tlab,
93 bool run_verification, bool clear_soft_refs,
94 bool restore_marks_for_biased_locking);
95
96 // In block contents verification, the number of header words to skip
97 NOT_PRODUCT(static size_t _skip_header_HeapWords;)
98
99 protected:
100 // Helper functions for allocation
101 HeapWord* attempt_allocation(size_t size,
102 bool is_tlab,
103 bool first_only);
104
105 // Helper function for two callbacks below.
106 // Considers collection of the first max_level+1 generations.
107 void do_collection(bool full,
108 bool clear_all_soft_refs,
109 size_t size,
110 bool is_tlab,
111 int max_level);
112
113 // Callback from VM_GenCollectForAllocation operation.
114 // This function does everything necessary/possible to satisfy an
|