125 static inline size_t filler_array_hdr_size(); |
125 static inline size_t filler_array_hdr_size(); |
126 static inline size_t filler_array_min_size(); |
126 static inline size_t filler_array_min_size(); |
127 static inline size_t filler_array_max_size(); |
127 static inline size_t filler_array_max_size(); |
128 |
128 |
129 DEBUG_ONLY(static void fill_args_check(HeapWord* start, size_t words);) |
129 DEBUG_ONLY(static void fill_args_check(HeapWord* start, size_t words);) |
130 DEBUG_ONLY(static void zap_filler_array(HeapWord* start, size_t words);) |
130 DEBUG_ONLY(static void zap_filler_array(HeapWord* start, size_t words, bool zap = true);) |
131 |
131 |
132 // Fill with a single array; caller must ensure filler_array_min_size() <= |
132 // Fill with a single array; caller must ensure filler_array_min_size() <= |
133 // words <= filler_array_max_size(). |
133 // words <= filler_array_max_size(). |
134 static inline void fill_with_array(HeapWord* start, size_t words); |
134 static inline void fill_with_array(HeapWord* start, size_t words, bool zap = true); |
135 |
135 |
136 // Fill with a single object (either an int array or a java.lang.Object). |
136 // Fill with a single object (either an int array or a java.lang.Object). |
137 static inline void fill_with_object_impl(HeapWord* start, size_t words); |
137 static inline void fill_with_object_impl(HeapWord* start, size_t words, bool zap = true); |
138 |
138 |
139 // Verification functions |
139 // Verification functions |
140 virtual void check_for_bad_heap_word_value(HeapWord* addr, size_t size) |
140 virtual void check_for_bad_heap_word_value(HeapWord* addr, size_t size) |
141 PRODUCT_RETURN; |
141 PRODUCT_RETURN; |
142 virtual void check_for_non_bad_heap_word_value(HeapWord* addr, size_t size) |
142 virtual void check_for_non_bad_heap_word_value(HeapWord* addr, size_t size) |
336 // region and has slightly less overhead. |
336 // region and has slightly less overhead. |
337 static size_t min_fill_size() { |
337 static size_t min_fill_size() { |
338 return size_t(align_object_size(oopDesc::header_size())); |
338 return size_t(align_object_size(oopDesc::header_size())); |
339 } |
339 } |
340 |
340 |
341 static void fill_with_objects(HeapWord* start, size_t words); |
341 static void fill_with_objects(HeapWord* start, size_t words, bool zap = true); |
342 |
342 |
343 static void fill_with_object(HeapWord* start, size_t words); |
343 static void fill_with_object(HeapWord* start, size_t words, bool zap = true); |
344 static void fill_with_object(MemRegion region) { |
344 static void fill_with_object(MemRegion region, bool zap = true) { |
345 fill_with_object(region.start(), region.word_size()); |
345 fill_with_object(region.start(), region.word_size(), zap); |
346 } |
346 } |
347 static void fill_with_object(HeapWord* start, HeapWord* end) { |
347 static void fill_with_object(HeapWord* start, HeapWord* end, bool zap = true) { |
348 fill_with_object(start, pointer_delta(end, start)); |
348 fill_with_object(start, pointer_delta(end, start), zap); |
349 } |
349 } |
350 |
350 |
351 // Some heaps may offer a contiguous region for shared non-blocking |
351 // Some heaps may offer a contiguous region for shared non-blocking |
352 // allocation, via inlined code (by exporting the address of the top and |
352 // allocation, via inlined code (by exporting the address of the top and |
353 // end fields defining the extent of the contiguous allocation region.) |
353 // end fields defining the extent of the contiguous allocation region.) |