< prev index next >
src/hotspot/cpu/aarch64/gc/shared/barrierSetAssembler_aarch64.cpp
Print this page
rev 50535 : [mq]: rename_IN_ROOT
rev 50536 : [mq]: rename_on_root
rev 50537 : [mq]: rename_on_heap
*** 31,47 ****
void BarrierSetAssembler::load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
Register dst, Address src, Register tmp1, Register tmp_thread) {
// LR is live. It must be saved around calls.
! bool on_heap = (decorators & IN_HEAP) != 0;
! bool on_root = (decorators & IN_ROOT) != 0;
bool oop_not_null = (decorators & OOP_NOT_NULL) != 0;
switch (type) {
case T_OBJECT:
case T_ARRAY: {
! if (on_heap) {
if (UseCompressedOops) {
__ ldrw(dst, src);
if (oop_not_null) {
__ decode_heap_oop_not_null(dst);
} else {
--- 31,47 ----
void BarrierSetAssembler::load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
Register dst, Address src, Register tmp1, Register tmp_thread) {
// LR is live. It must be saved around calls.
! bool in_heap = (decorators & IN_HEAP) != 0;
! bool in_native = (decorators & IN_NATIVE) != 0;
bool oop_not_null = (decorators & OOP_NOT_NULL) != 0;
switch (type) {
case T_OBJECT:
case T_ARRAY: {
! if (in_heap) {
if (UseCompressedOops) {
__ ldrw(dst, src);
if (oop_not_null) {
__ decode_heap_oop_not_null(dst);
} else {
*** 49,59 ****
}
} else {
__ ldr(dst, src);
}
} else {
! assert(on_root, "why else?");
__ ldr(dst, src);
}
break;
}
case T_BOOLEAN: __ load_unsigned_byte (dst, src); break;
--- 49,59 ----
}
} else {
__ ldr(dst, src);
}
} else {
! assert(in_native, "why else?");
__ ldr(dst, src);
}
break;
}
case T_BOOLEAN: __ load_unsigned_byte (dst, src); break;
*** 69,96 ****
}
}
void BarrierSetAssembler::store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
Address dst, Register val, Register tmp1, Register tmp2) {
! bool on_heap = (decorators & IN_HEAP) != 0;
! bool on_root = (decorators & IN_ROOT) != 0;
switch (type) {
case T_OBJECT:
case T_ARRAY: {
val = val == noreg ? zr : val;
! if (on_heap) {
if (UseCompressedOops) {
assert(!dst.uses(val), "not enough registers");
if (val != zr) {
__ encode_heap_oop(val);
}
__ strw(val, dst);
} else {
__ str(val, dst);
}
} else {
! assert(on_root, "why else?");
__ str(val, dst);
}
break;
}
case T_BOOLEAN:
--- 69,96 ----
}
}
void BarrierSetAssembler::store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
Address dst, Register val, Register tmp1, Register tmp2) {
! bool in_heap = (decorators & IN_HEAP) != 0;
! bool in_native = (decorators & IN_NATIVE) != 0;
switch (type) {
case T_OBJECT:
case T_ARRAY: {
val = val == noreg ? zr : val;
! if (in_heap) {
if (UseCompressedOops) {
assert(!dst.uses(val), "not enough registers");
if (val != zr) {
__ encode_heap_oop(val);
}
__ strw(val, dst);
} else {
__ str(val, dst);
}
} else {
! assert(in_native, "why else?");
__ str(val, dst);
}
break;
}
case T_BOOLEAN:
< prev index next >