186 static inline void fill_with_array(HeapWord* start, size_t words, bool zap = true);
187
188 // Fill with a single object (either an int array or a java.lang.Object).
189 static inline void fill_with_object_impl(HeapWord* start, size_t words, bool zap = true);
190
191 virtual void trace_heap(GCWhen::Type when, const GCTracer* tracer);
192
193 // Verification functions
194 virtual void check_for_bad_heap_word_value(HeapWord* addr, size_t size)
195 PRODUCT_RETURN;
196 virtual void check_for_non_bad_heap_word_value(HeapWord* addr, size_t size)
197 PRODUCT_RETURN;
198 debug_only(static void check_for_valid_allocation_state();)
199
200 public:
201 enum Name {
202 None,
203 Serial,
204 Parallel,
205 CMS,
206 G1
207 };
208
209 static inline size_t filler_array_max_size() {
210 return _filler_array_max_size;
211 }
212
213 virtual Name kind() const = 0;
214
215 virtual const char* name() const = 0;
216
217 /**
218 * Returns JNI error code JNI_ENOMEM if memory could not be allocated,
219 * and JNI_OK on success.
220 */
221 virtual jint initialize() = 0;
222
223 // In many heaps, there will be a need to perform some initialization activities
224 // after the Universe is fully formed, but before general heap allocation is allowed.
225 // This is the correct place to place such initialization methods.
226 virtual void post_initialize();
|
186 static inline void fill_with_array(HeapWord* start, size_t words, bool zap = true);
187
188 // Fill with a single object (either an int array or a java.lang.Object).
189 static inline void fill_with_object_impl(HeapWord* start, size_t words, bool zap = true);
190
191 virtual void trace_heap(GCWhen::Type when, const GCTracer* tracer);
192
193 // Verification functions
194 virtual void check_for_bad_heap_word_value(HeapWord* addr, size_t size)
195 PRODUCT_RETURN;
196 virtual void check_for_non_bad_heap_word_value(HeapWord* addr, size_t size)
197 PRODUCT_RETURN;
198 debug_only(static void check_for_valid_allocation_state();)
199
200 public:
201 enum Name {
202 None,
203 Serial,
204 Parallel,
205 CMS,
206 G1,
207 Epsilon,
208 };
209
210 static inline size_t filler_array_max_size() {
211 return _filler_array_max_size;
212 }
213
214 virtual Name kind() const = 0;
215
216 virtual const char* name() const = 0;
217
218 /**
219 * Returns JNI error code JNI_ENOMEM if memory could not be allocated,
220 * and JNI_OK on success.
221 */
222 virtual jint initialize() = 0;
223
224 // In many heaps, there will be a need to perform some initialization activities
225 // after the Universe is fully formed, but before general heap allocation is allowed.
226 // This is the correct place to place such initialization methods.
227 virtual void post_initialize();
|