< prev index next >

src/hotspot/cpu/x86/gc/g1/g1BarrierSetAssembler_x86.cpp

Print this page

        

@@ -347,13 +347,13 @@
 
 void G1BarrierSetAssembler::oop_store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
                                          Address dst, Register val, Register tmp1, Register tmp2) {
   bool in_heap = (decorators & IN_HEAP) != 0;
   bool as_normal = (decorators & AS_NORMAL) != 0;
-  assert((decorators & IS_DEST_UNINITIALIZED) == 0, "unsupported");
+  //assert((decorators & IS_DEST_UNINITIALIZED) == 0, "unsupported");
 
-  bool needs_pre_barrier = as_normal;
+  bool needs_pre_barrier = as_normal && (! (decorators & IS_DEST_UNINITIALIZED) );
   bool needs_post_barrier = val != noreg && in_heap;
 
   Register tmp3 = LP64_ONLY(r8) NOT_LP64(rsi);
   Register rthread = LP64_ONLY(r15_thread) NOT_LP64(rcx);
   // flatten object address if needed
< prev index next >