< prev index next >

src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp

Print this page
rev 58687 : Shenandoah: New incremental-update mode
rev 58688 : [mq]: JDK-8242054-04.patch

*** 51,61 **** bool dest_uninitialized = (decorators & IS_DEST_UNINITIALIZED) != 0; if (is_reference_type(type)) { ! if ((ShenandoahSATBBarrier && !dest_uninitialized) || ShenandoahLoadRefBarrier) { #ifdef _LP64 Register thread = r15_thread; #else Register thread = rax; if (thread == src || thread == dst || thread == count) { --- 51,61 ---- bool dest_uninitialized = (decorators & IS_DEST_UNINITIALIZED) != 0; if (is_reference_type(type)) { ! if ((ShenandoahSATBBarrier && !dest_uninitialized) || ShenandoahStoreValEnqueueBarrier || ShenandoahLoadRefBarrier) { #ifdef _LP64 Register thread = r15_thread; #else Register thread = rax; if (thread == src || thread == dst || thread == count) {
*** 77,89 **** __ testptr(count, count); __ jcc(Assembler::zero, done); // Avoid runtime call when not active. Address gc_state(thread, in_bytes(ShenandoahThreadLocalData::gc_state_offset())); ! int flags = ShenandoahHeap::HAS_FORWARDED; ! if (!dest_uninitialized) { ! flags |= ShenandoahHeap::MARKING; } __ testb(gc_state, flags); __ jcc(Assembler::zero, done); __ pusha(); // push registers --- 77,91 ---- __ testptr(count, count); __ jcc(Assembler::zero, done); // Avoid runtime call when not active. Address gc_state(thread, in_bytes(ShenandoahThreadLocalData::gc_state_offset())); ! int flags; ! if (ShenandoahSATBBarrier && dest_uninitialized) { ! flags = ShenandoahHeap::HAS_FORWARDED; ! } else { ! flags = ShenandoahHeap::HAS_FORWARDED | ShenandoahHeap::MARKING; } __ testb(gc_state, flags); __ jcc(Assembler::zero, done); __ pusha(); // push registers
< prev index next >