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