comparison src/share/vm/gc_interface/collectedHeap.inline.hpp @ 3961:a92cdbac8b9e

7081933: Use zeroing elimination optimization for large array Summary: Don't zero new typeArray during runtime call if the allocation is followed by arraycopy into it. Reviewed-by: twisti
author kvn
date Mon, 26 Sep 2011 10:24:05 -0700
parents f08d439fab8c
children 9a9bb0010c91
comparison
equal deleted inserted replaced
3960:f08d439fab8c 3961:a92cdbac8b9e
272 post_allocation_setup_array(klass, obj, size, length); 272 post_allocation_setup_array(klass, obj, size, length);
273 NOT_PRODUCT(Universe::heap()->check_for_bad_heap_word_value(obj, size)); 273 NOT_PRODUCT(Universe::heap()->check_for_bad_heap_word_value(obj, size));
274 return (oop)obj; 274 return (oop)obj;
275 } 275 }
276 276
277 oop CollectedHeap::array_allocate_nozero(KlassHandle klass,
278 int size,
279 int length,
280 TRAPS) {
281 debug_only(check_for_valid_allocation_state());
282 assert(!Universe::heap()->is_gc_active(), "Allocation during gc not allowed");
283 assert(size >= 0, "int won't convert to size_t");
284 HeapWord* obj = common_mem_allocate_noinit(size, CHECK_NULL);
285 ((oop)obj)->set_klass_gap(0);
286 post_allocation_setup_array(klass, obj, size, length);
287 #ifndef PRODUCT
288 const size_t hs = oopDesc::header_size()+1;
289 Universe::heap()->check_for_non_bad_heap_word_value(obj+hs, size-hs);
290 #endif
291 return (oop)obj;
292 }
293
277 oop CollectedHeap::permanent_obj_allocate(KlassHandle klass, int size, TRAPS) { 294 oop CollectedHeap::permanent_obj_allocate(KlassHandle klass, int size, TRAPS) {
278 oop obj = permanent_obj_allocate_no_klass_install(klass, size, CHECK_NULL); 295 oop obj = permanent_obj_allocate_no_klass_install(klass, size, CHECK_NULL);
279 post_allocation_install_obj_klass(klass, obj, size); 296 post_allocation_install_obj_klass(klass, obj, size);
280 NOT_PRODUCT(Universe::heap()->check_for_bad_heap_word_value((HeapWord*) obj, 297 NOT_PRODUCT(Universe::heap()->check_for_bad_heap_word_value((HeapWord*) obj,
281 size)); 298 size));