< prev index next >

src/hotspot/cpu/x86/macroAssembler_x86.cpp

Print this page
rev 50904 : 8205523: Explicit barriers for interpreter
rev 50905 : [mq]: JDK-8205523-01-x86.patch


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) {


< prev index next >