< prev index next >
src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp
Print this page
rev 51408 : [mq]: cleanup-c1.patch
*** 636,646 ****
--- 636,655 ----
read_barrier(masm, obj);
}
}
void ShenandoahBarrierSetAssembler::resolve_for_write(MacroAssembler* masm, DecoratorSet decorators, Register obj) {
+ bool oop_not_null = (decorators & IS_NOT_NULL) != 0;
+ if (oop_not_null) {
write_barrier(masm, obj);
+ } else {
+ Label done;
+ __ testptr(obj, obj);
+ __ jcc(Assembler::zero, done);
+ write_barrier(masm, obj);
+ __ bind(done);
+ }
}
// Special Shenandoah CAS implementation that handles false negatives
// due to concurrent evacuation.
#ifndef _LP64
< prev index next >