< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.hpp

Print this page
rev 54116 : 8220780: ShenandoahBS::AccessBarrier::oop_store_in_heap_at ignores AS_NO_KEEPALIVE

@@ -224,11 +224,14 @@
       return value;
     }
 
     template <typename T>
     static void oop_store_in_heap(T* addr, oop value) {
+      const bool keep_alive = (decorators & AS_NO_KEEPALIVE) == 0;
+      if (keep_alive) {
       ShenandoahBarrierSet::barrier_set()->write_ref_field_pre_work(addr, value);
+      }
       Raw::oop_store(addr, value);
     }
 
     static void oop_store_in_heap_at(oop base, ptrdiff_t offset, oop value) {
       base = ShenandoahBarrierSet::barrier_set()->write_barrier(base);
< prev index next >