< prev index next >

src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp

Print this page
rev 51408 : [mq]: cleanup-c1.patch

@@ -463,11 +463,19 @@
     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 is_null;
+    __ cbz(obj, is_null);
+    write_barrier(masm, obj);
+    __ bind(is_null);
+  }
 }
 
 void ShenandoahBarrierSetAssembler::cmpxchg_oop(MacroAssembler* masm, Register addr, Register expected, Register new_val,
                                                 bool acquire, bool release, bool weak, bool encode,
                                                 Register tmp1, Register tmp2, Register tmp3,
< prev index next >