< prev index next >

src/hotspot/cpu/x86/macroAssembler_x86.cpp

Print this page




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 }




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|ACCESS_READ by default.
6292   if ((decorators & (ACCESS_READ | ACCESS_WRITE)) == 0) {
6293     decorators |= ACCESS_READ | 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 }


< prev index next >