src/hotspot/cpu/x86/gc/g1/g1BarrierSetAssembler_x86.cpp
changeset 50803 45c1fde86050
parent 50728 9375184cec98
child 54110 f4f0dce5d0bb
equal deleted inserted replaced
50802:fa380b3b2b7d 50803:45c1fde86050
   347 }
   347 }
   348 
   348 
   349 void G1BarrierSetAssembler::oop_store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
   349 void G1BarrierSetAssembler::oop_store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
   350                                          Address dst, Register val, Register tmp1, Register tmp2) {
   350                                          Address dst, Register val, Register tmp1, Register tmp2) {
   351   bool in_heap = (decorators & IN_HEAP) != 0;
   351   bool in_heap = (decorators & IN_HEAP) != 0;
   352   bool in_concurrent_root = (decorators & IN_CONCURRENT_ROOT) != 0;
   352   bool as_normal = (decorators & AS_NORMAL) != 0;
   353 
   353   assert((decorators & IS_DEST_UNINITIALIZED) == 0, "unsupported");
   354   bool needs_pre_barrier = in_heap || in_concurrent_root;
   354 
       
   355   bool needs_pre_barrier = as_normal;
   355   bool needs_post_barrier = val != noreg && in_heap;
   356   bool needs_post_barrier = val != noreg && in_heap;
   356 
   357 
   357   Register tmp3 = LP64_ONLY(r8) NOT_LP64(rsi);
   358   Register tmp3 = LP64_ONLY(r8) NOT_LP64(rsi);
   358   Register rthread = LP64_ONLY(r15_thread) NOT_LP64(rcx);
   359   Register rthread = LP64_ONLY(r15_thread) NOT_LP64(rcx);
   359   // flatten object address if needed
   360   // flatten object address if needed