< prev index next >

src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp

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


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








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




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


< prev index next >