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
|