25 #include "precompiled.hpp"
26 #include "asm/macroAssembler.inline.hpp"
27 #include "gc/shared/modRefBarrierSetAssembler.hpp"
28
29 #define __ masm->
30
31 void ModRefBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
32 Register addr, Register count, int callee_saved_regs) {
33
34 if (is_oop) {
35 gen_write_ref_array_pre_barrier(masm, decorators, addr, count, callee_saved_regs);
36 }
37 }
38
39 void ModRefBarrierSetAssembler::arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
40 Register addr, Register count, Register tmp) {
41 if (is_oop) {
42 gen_write_ref_array_post_barrier(masm, decorators, addr, count, tmp);
43 }
44 }
|
25 #include "precompiled.hpp"
26 #include "asm/macroAssembler.inline.hpp"
27 #include "gc/shared/modRefBarrierSetAssembler.hpp"
28
29 #define __ masm->
30
31 void ModRefBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
32 Register addr, Register count, int callee_saved_regs) {
33
34 if (is_oop) {
35 gen_write_ref_array_pre_barrier(masm, decorators, addr, count, callee_saved_regs);
36 }
37 }
38
39 void ModRefBarrierSetAssembler::arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
40 Register addr, Register count, Register tmp) {
41 if (is_oop) {
42 gen_write_ref_array_post_barrier(masm, decorators, addr, count, tmp);
43 }
44 }
45
46 void ModRefBarrierSetAssembler::store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
47 Address obj, Register new_val, Register tmp1, Register tmp2, Register tmp3, bool is_null) {
48 if (type == T_OBJECT || type == T_ARRAY) {
49 oop_store_at(masm, decorators, type, obj, new_val, tmp1, tmp2, tmp3, is_null);
50 } else {
51 BarrierSetAssembler::store_at(masm, decorators, type, obj, new_val, tmp1, tmp2, tmp3, is_null);
52 }
53 }
|