equal
deleted
inserted
replaced
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 |