180
181 // Restore scratch register
182 if (tmp1 == noreg) {
183 __ pop(scratch);
184 }
185
186 BLOCK_COMMENT("} ZBarrierSetAssembler::load_at");
187 }
188
189 #ifdef ASSERT
190
191 void ZBarrierSetAssembler::store_at(MacroAssembler* masm,
192 DecoratorSet decorators,
193 BasicType type,
194 Address dst,
195 Register src,
196 Register tmp1,
197 Register tmp2) {
198 BLOCK_COMMENT("ZBarrierSetAssembler::store_at {");
199
200 // Verify oop store
201 if (type == T_OBJECT || type == T_ARRAY) {
202 // Note that src could be noreg, which means we
203 // are storing null and can skip verification.
204 if (src != noreg) {
205 Label done;
206 __ testptr(src, address_bad_mask_from_thread(r15_thread));
207 __ jcc(Assembler::zero, done);
208 __ stop("Verify oop store failed");
209 __ should_not_reach_here();
210 __ bind(done);
211 }
212 }
213
214 // Store value
215 BarrierSetAssembler::store_at(masm, decorators, type, dst, src, tmp1, tmp2);
216
217 BLOCK_COMMENT("} ZBarrierSetAssembler::store_at");
218 }
219
|
180
181 // Restore scratch register
182 if (tmp1 == noreg) {
183 __ pop(scratch);
184 }
185
186 BLOCK_COMMENT("} ZBarrierSetAssembler::load_at");
187 }
188
189 #ifdef ASSERT
190
191 void ZBarrierSetAssembler::store_at(MacroAssembler* masm,
192 DecoratorSet decorators,
193 BasicType type,
194 Address dst,
195 Register src,
196 Register tmp1,
197 Register tmp2) {
198 BLOCK_COMMENT("ZBarrierSetAssembler::store_at {");
199
200 assert(type != T_VALUETYPE, "Not supported yet");
201 // Verify oop store
202 if (type == T_OBJECT || type == T_ARRAY) {
203 // Note that src could be noreg, which means we
204 // are storing null and can skip verification.
205 if (src != noreg) {
206 Label done;
207 __ testptr(src, address_bad_mask_from_thread(r15_thread));
208 __ jcc(Assembler::zero, done);
209 __ stop("Verify oop store failed");
210 __ should_not_reach_here();
211 __ bind(done);
212 }
213 }
214
215 // Store value
216 BarrierSetAssembler::store_at(masm, decorators, type, dst, src, tmp1, tmp2);
217
218 BLOCK_COMMENT("} ZBarrierSetAssembler::store_at");
219 }
220
|