6262 bool as_raw = (decorators & AS_RAW) != 0;
6263 if (as_raw) {
6264 bs->BarrierSetAssembler::load_at(this, decorators, type, dst, src, tmp1, thread_tmp);
6265 } else {
6266 bs->load_at(this, decorators, type, dst, src, tmp1, thread_tmp);
6267 }
6268 }
6269
6270 void MacroAssembler::access_store_at(BasicType type, DecoratorSet decorators, Address dst, Register src,
6271 Register tmp1, Register tmp2) {
6272 BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
6273 decorators = AccessInternal::decorator_fixup(decorators);
6274 bool as_raw = (decorators & AS_RAW) != 0;
6275 if (as_raw) {
6276 bs->BarrierSetAssembler::store_at(this, decorators, type, dst, src, tmp1, tmp2);
6277 } else {
6278 bs->store_at(this, decorators, type, dst, src, tmp1, tmp2);
6279 }
6280 }
6281
6282 void MacroAssembler::load_heap_oop(Register dst, Address src, Register tmp1,
6283 Register thread_tmp, DecoratorSet decorators) {
6284 access_load_at(T_OBJECT, IN_HEAP | decorators, dst, src, tmp1, thread_tmp);
6285 }
6286
6287 // Doesn't do verfication, generates fixed size code
6288 void MacroAssembler::load_heap_oop_not_null(Register dst, Address src, Register tmp1,
6289 Register thread_tmp, DecoratorSet decorators) {
6290 access_load_at(T_OBJECT, IN_HEAP | OOP_NOT_NULL | decorators, dst, src, tmp1, thread_tmp);
6291 }
6292
6293 void MacroAssembler::store_heap_oop(Address dst, Register src, Register tmp1,
6294 Register tmp2, DecoratorSet decorators) {
6295 access_store_at(T_OBJECT, IN_HEAP | decorators, dst, src, tmp1, tmp2);
6296 }
6297
6298 // Used for storing NULLs.
6299 void MacroAssembler::store_heap_oop_null(Address dst) {
6300 access_store_at(T_OBJECT, IN_HEAP, dst, noreg, noreg, noreg);
6301 }
|
6262 bool as_raw = (decorators & AS_RAW) != 0;
6263 if (as_raw) {
6264 bs->BarrierSetAssembler::load_at(this, decorators, type, dst, src, tmp1, thread_tmp);
6265 } else {
6266 bs->load_at(this, decorators, type, dst, src, tmp1, thread_tmp);
6267 }
6268 }
6269
6270 void MacroAssembler::access_store_at(BasicType type, DecoratorSet decorators, Address dst, Register src,
6271 Register tmp1, Register tmp2) {
6272 BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
6273 decorators = AccessInternal::decorator_fixup(decorators);
6274 bool as_raw = (decorators & AS_RAW) != 0;
6275 if (as_raw) {
6276 bs->BarrierSetAssembler::store_at(this, decorators, type, dst, src, tmp1, tmp2);
6277 } else {
6278 bs->store_at(this, decorators, type, dst, src, tmp1, tmp2);
6279 }
6280 }
6281
6282 void MacroAssembler::resolve_for_read(DecoratorSet decorators, Register obj) {
6283 BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
6284 return bs->resolve_for_read(this, decorators, obj);
6285 }
6286
6287 void MacroAssembler::resolve_for_write(DecoratorSet decorators, Register obj) {
6288 BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
6289 return bs->resolve_for_write(this, decorators, obj);
6290 }
6291
6292 void MacroAssembler::load_heap_oop(Register dst, Address src, Register tmp1,
6293 Register thread_tmp, DecoratorSet decorators) {
6294 access_load_at(T_OBJECT, IN_HEAP | decorators, dst, src, tmp1, thread_tmp);
6295 }
6296
6297 // Doesn't do verfication, generates fixed size code
6298 void MacroAssembler::load_heap_oop_not_null(Register dst, Address src, Register tmp1,
6299 Register thread_tmp, DecoratorSet decorators) {
6300 access_load_at(T_OBJECT, IN_HEAP | OOP_NOT_NULL | decorators, dst, src, tmp1, thread_tmp);
6301 }
6302
6303 void MacroAssembler::store_heap_oop(Address dst, Register src, Register tmp1,
6304 Register tmp2, DecoratorSet decorators) {
6305 access_store_at(T_OBJECT, IN_HEAP | decorators, dst, src, tmp1, tmp2);
6306 }
6307
6308 // Used for storing NULLs.
6309 void MacroAssembler::store_heap_oop_null(Address dst) {
6310 access_store_at(T_OBJECT, IN_HEAP, dst, noreg, noreg, noreg);
6311 }
|