comparison src/share/vm/gc_interface/collectedHeap.hpp @ 1165:2dd52dea6d28

6902115: G1:assert(ignore_max_completed||thread->is_Java_thread()||SafepointSynchronize::is_at_safepoint()) Summary: Remove invalid assert and mangle filler objects in TLABs that are being retired. Reviewed-by: ysr, jmasa
author johnc
date Tue, 12 Jan 2010 14:56:46 -0800
parents 39b01ab7035a
children 7b0e9cba0307
comparison
equal deleted inserted replaced
1149:0579c695832f 1165:2dd52dea6d28
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.)