428 }
429 return obj;
430 }
431
432 void ShenandoahBarrierSet::keep_alive_barrier(oop obj) {
433 if (ShenandoahKeepAliveBarrier) {
434 if (_heap->concurrent_mark_in_progress()) {
435 G1SATBCardTableModRefBS::enqueue(obj);
436 } else if (_heap->is_concurrent_partial_in_progress()) {
437 write_barrier_impl(obj);
438 }
439 }
440 }
441
442 #ifdef ASSERT
443 void ShenandoahBarrierSet::verify_safe_oop(oop p) {
444 ShenandoahHeap* heap = ShenandoahHeap::heap();
445 if (p == NULL) return;
446 if (heap->in_collection_set(p) &&
447 ! heap->cancelled_concgc()) {
448 tty->print_cr("oop = "PTR_FORMAT", resolved: "PTR_FORMAT", marked-next %s, marked-complete: %s",
449 p2i(p),
450 p2i(read_barrier(p)),
451 BOOL_TO_STR(heap->is_marked_next(p)),
452 BOOL_TO_STR(heap->is_marked_complete(p)));
453 tty->print_cr("in_cset: %s", BOOL_TO_STR(heap->in_collection_set(p)));
454 heap->heap_region_containing((HeapWord*) p)->print();
455 tty->print_cr("top-at-mark-start: %p", heap->next_top_at_mark_start((HeapWord*) p));
456 tty->print_cr("top-at-prev-mark-start: %p", heap->complete_top_at_mark_start((HeapWord*) p));
457 tty->print_cr("marking: %s, evacuating: %s", BOOL_TO_STR(heap->concurrent_mark_in_progress()), BOOL_TO_STR(heap->is_evacuation_in_progress()));
458 assert(false, "We should have fixed this earlier");
459 }
460 }
461 #endif
|
428 }
429 return obj;
430 }
431
432 void ShenandoahBarrierSet::keep_alive_barrier(oop obj) {
433 if (ShenandoahKeepAliveBarrier) {
434 if (_heap->concurrent_mark_in_progress()) {
435 G1SATBCardTableModRefBS::enqueue(obj);
436 } else if (_heap->is_concurrent_partial_in_progress()) {
437 write_barrier_impl(obj);
438 }
439 }
440 }
441
442 #ifdef ASSERT
443 void ShenandoahBarrierSet::verify_safe_oop(oop p) {
444 ShenandoahHeap* heap = ShenandoahHeap::heap();
445 if (p == NULL) return;
446 if (heap->in_collection_set(p) &&
447 ! heap->cancelled_concgc()) {
448 tty->print_cr("oop = "PTR_FORMAT", resolved: "PTR_FORMAT", marked %s",
449 p2i(p),
450 p2i(read_barrier(p)),
451 BOOL_TO_STR(heap->is_marked(p)));
452 tty->print_cr("in_cset: %s", BOOL_TO_STR(heap->in_collection_set(p)));
453 heap->heap_region_containing((HeapWord*) p)->print();
454 tty->print_cr("top-at-mark-start: %p", heap->top_at_mark_start((HeapWord*) p));
455 tty->print_cr("marking: %s, evacuating: %s", BOOL_TO_STR(heap->concurrent_mark_in_progress()), BOOL_TO_STR(heap->is_evacuation_in_progress()));
456 assert(false, "We should have fixed this earlier");
457 }
458 }
459 #endif
|