< prev index next >

src/hotspot/cpu/x86/macroAssembler_x86.cpp

Print this page
rev 50715 : 8205523: Explicit barriers for interpreter


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 }


< prev index next >