610 {
611 // Verify that the storage points to a parsable object in heap
612 DEBUG_ONLY(oop old_obj = oop(deferred.start());)
613 assert(!is_in_young(old_obj),
614 "Else should have been filtered in on_slowpath_allocation_exit()");
615 assert(oopDesc::is_oop(old_obj, true), "Not an oop");
616 assert(deferred.word_size() == (size_t)(old_obj->size()),
617 "Mismatch: multiple objects?");
618 }
619 write_region(deferred);
620 // "Clear" the deferred_card_mark field
621 thread->set_deferred_card_mark(MemRegion());
622 }
623 assert(thread->deferred_card_mark().is_empty(), "invariant");
624 #else
625 assert(!_defer_initial_card_mark, "Should be false");
626 assert(thread->deferred_card_mark().is_empty(), "Should be empty");
627 #endif
628 }
629
630 void CardTableModRefBS::flush_deferred_barriers(JavaThread* thread) {
631 // The deferred store barriers must all have been flushed to the
632 // card-table (or other remembered set structure) before GC starts
633 // processing the card-table (or other remembered set).
634 flush_deferred_card_mark_barrier(thread);
635 }
|
610 {
611 // Verify that the storage points to a parsable object in heap
612 DEBUG_ONLY(oop old_obj = oop(deferred.start());)
613 assert(!is_in_young(old_obj),
614 "Else should have been filtered in on_slowpath_allocation_exit()");
615 assert(oopDesc::is_oop(old_obj, true), "Not an oop");
616 assert(deferred.word_size() == (size_t)(old_obj->size()),
617 "Mismatch: multiple objects?");
618 }
619 write_region(deferred);
620 // "Clear" the deferred_card_mark field
621 thread->set_deferred_card_mark(MemRegion());
622 }
623 assert(thread->deferred_card_mark().is_empty(), "invariant");
624 #else
625 assert(!_defer_initial_card_mark, "Should be false");
626 assert(thread->deferred_card_mark().is_empty(), "Should be empty");
627 #endif
628 }
629
630 void CardTableModRefBS::on_thread_destroy(JavaThread* thread) {
631 // The deferred store barriers must all have been flushed to the
632 // card-table (or other remembered set structure) before GC starts
633 // processing the card-table (or other remembered set).
634 flush_deferred_card_mark_barrier(thread);
635 }
|