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
|