99
100 bool needs_post_barrier = val != noreg && in_heap;
101 BarrierSetAssembler::store_at(masm, decorators, type, dst, val, noreg, noreg, noreg);
102 if (needs_post_barrier) {
103 // flatten object address if needed
104 if (!precise || (dst.index() == noreg && dst.offset() == 0)) {
105 if (tmp3 != noreg) {
106 // Called by MacroAssembler::pack_value_helper. We cannot corrupt the dst.base() register
107 __ mov(tmp3, dst.base());
108 store_check(masm, tmp3, dst);
109 } else {
110 // It's OK to corrupt the dst.base() register.
111 store_check(masm, dst.base(), dst);
112 }
113
114 } else {
115 __ lea(r3, dst);
116 store_check(masm, r3, dst);
117 }
118 }
119 }
|
99
100 bool needs_post_barrier = val != noreg && in_heap;
101 BarrierSetAssembler::store_at(masm, decorators, type, dst, val, noreg, noreg, noreg);
102 if (needs_post_barrier) {
103 // flatten object address if needed
104 if (!precise || (dst.index() == noreg && dst.offset() == 0)) {
105 if (tmp3 != noreg) {
106 // Called by MacroAssembler::pack_value_helper. We cannot corrupt the dst.base() register
107 __ mov(tmp3, dst.base());
108 store_check(masm, tmp3, dst);
109 } else {
110 // It's OK to corrupt the dst.base() register.
111 store_check(masm, dst.base(), dst);
112 }
113
114 } else {
115 __ lea(r3, dst);
116 store_check(masm, r3, dst);
117 }
118 }
119
120 }
|