< prev index next >

src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp

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


3967   if (as_raw) {
3968     bs->BarrierSetAssembler::load_at(this, decorators, type, dst, src, tmp1, thread_tmp);
3969   } else {
3970     bs->load_at(this, decorators, type, dst, src, tmp1, thread_tmp);
3971   }
3972 }
3973 
3974 void MacroAssembler::access_store_at(BasicType type, DecoratorSet decorators,
3975                                      Address dst, Register src,
3976                                      Register tmp1, Register thread_tmp) {
3977   BarrierSetAssembler *bs = BarrierSet::barrier_set()->barrier_set_assembler();
3978   decorators = AccessInternal::decorator_fixup(decorators);
3979   bool as_raw = (decorators & AS_RAW) != 0;
3980   if (as_raw) {
3981     bs->BarrierSetAssembler::store_at(this, decorators, type, dst, src, tmp1, thread_tmp);
3982   } else {
3983     bs->store_at(this, decorators, type, dst, src, tmp1, thread_tmp);
3984   }
3985 }
3986 










3987 void MacroAssembler::load_heap_oop(Register dst, Address src, Register tmp1,
3988                                    Register thread_tmp, DecoratorSet decorators) {
3989   access_load_at(T_OBJECT, IN_HEAP | decorators, dst, src, tmp1, thread_tmp);
3990 }
3991 
3992 void MacroAssembler::load_heap_oop_not_null(Register dst, Address src, Register tmp1,
3993                                             Register thread_tmp, DecoratorSet decorators) {
3994   access_load_at(T_OBJECT, IN_HEAP | OOP_NOT_NULL | decorators, dst, src, tmp1, thread_tmp);
3995 }
3996 
3997 void MacroAssembler::store_heap_oop(Address dst, Register src, Register tmp1,
3998                                     Register thread_tmp, DecoratorSet decorators) {
3999   access_store_at(T_OBJECT, IN_HEAP | decorators, dst, src, tmp1, thread_tmp);
4000 }
4001 
4002 // Used for storing NULLs.
4003 void MacroAssembler::store_heap_oop_null(Address dst) {
4004   access_store_at(T_OBJECT, IN_HEAP, dst, noreg, noreg, noreg);
4005 }
4006 




3967   if (as_raw) {
3968     bs->BarrierSetAssembler::load_at(this, decorators, type, dst, src, tmp1, thread_tmp);
3969   } else {
3970     bs->load_at(this, decorators, type, dst, src, tmp1, thread_tmp);
3971   }
3972 }
3973 
3974 void MacroAssembler::access_store_at(BasicType type, DecoratorSet decorators,
3975                                      Address dst, Register src,
3976                                      Register tmp1, Register thread_tmp) {
3977   BarrierSetAssembler *bs = BarrierSet::barrier_set()->barrier_set_assembler();
3978   decorators = AccessInternal::decorator_fixup(decorators);
3979   bool as_raw = (decorators & AS_RAW) != 0;
3980   if (as_raw) {
3981     bs->BarrierSetAssembler::store_at(this, decorators, type, dst, src, tmp1, thread_tmp);
3982   } else {
3983     bs->store_at(this, decorators, type, dst, src, tmp1, thread_tmp);
3984   }
3985 }
3986 
3987 void MacroAssembler::resolve_for_read(DecoratorSet decorators, Register obj) {
3988   BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
3989   return bs->resolve_for_read(this, decorators, obj);
3990 }
3991 
3992 void MacroAssembler::resolve_for_write(DecoratorSet decorators, Register obj) {
3993   BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
3994   return bs->resolve_for_write(this, decorators, obj);
3995 }
3996 
3997 void MacroAssembler::load_heap_oop(Register dst, Address src, Register tmp1,
3998                                    Register thread_tmp, DecoratorSet decorators) {
3999   access_load_at(T_OBJECT, IN_HEAP | decorators, dst, src, tmp1, thread_tmp);
4000 }
4001 
4002 void MacroAssembler::load_heap_oop_not_null(Register dst, Address src, Register tmp1,
4003                                             Register thread_tmp, DecoratorSet decorators) {
4004   access_load_at(T_OBJECT, IN_HEAP | OOP_NOT_NULL | decorators, dst, src, tmp1, thread_tmp);
4005 }
4006 
4007 void MacroAssembler::store_heap_oop(Address dst, Register src, Register tmp1,
4008                                     Register thread_tmp, DecoratorSet decorators) {
4009   access_store_at(T_OBJECT, IN_HEAP | decorators, dst, src, tmp1, thread_tmp);
4010 }
4011 
4012 // Used for storing NULLs.
4013 void MacroAssembler::store_heap_oop_null(Address dst) {
4014   access_store_at(T_OBJECT, IN_HEAP, dst, noreg, noreg, noreg);
4015 }
4016 


< prev index next >