hotspot/src/share/vm/gc/shared/collectedHeap.cpp
changeset 36363 394562fd49a3
parent 35939 05df7e64ecfc
child 37149 f025738bbada
equal deleted inserted replaced
36362:3113b1b523c4 36363:394562fd49a3
   403 // that specific collector in mind, and the documentation above suitably
   403 // that specific collector in mind, and the documentation above suitably
   404 // extended and updated.
   404 // extended and updated.
   405 oop CollectedHeap::new_store_pre_barrier(JavaThread* thread, oop new_obj) {
   405 oop CollectedHeap::new_store_pre_barrier(JavaThread* thread, oop new_obj) {
   406   // If a previous card-mark was deferred, flush it now.
   406   // If a previous card-mark was deferred, flush it now.
   407   flush_deferred_store_barrier(thread);
   407   flush_deferred_store_barrier(thread);
   408   if (can_elide_initializing_store_barrier(new_obj)) {
   408   if (can_elide_initializing_store_barrier(new_obj) ||
       
   409       new_obj->is_typeArray()) {
       
   410     // Arrays of non-references don't need a pre-barrier.
   409     // The deferred_card_mark region should be empty
   411     // The deferred_card_mark region should be empty
   410     // following the flush above.
   412     // following the flush above.
   411     assert(thread->deferred_card_mark().is_empty(), "Error");
   413     assert(thread->deferred_card_mark().is_empty(), "Error");
   412   } else {
   414   } else {
   413     MemRegion mr((HeapWord*)new_obj, new_obj->size());
   415     MemRegion mr((HeapWord*)new_obj, new_obj->size());