8242449: AArch64: r27 can be allocated in CompressedOops mode
Reviewed-by: aph, xliu
This commit is contained in:
parent
25cd1774a7
commit
f51088e261
src/hotspot/cpu/aarch64
@ -1097,9 +1097,9 @@ source %{
|
||||
_NO_SPECIAL_PTR_REG_mask = _ALL_REG_mask;
|
||||
_NO_SPECIAL_PTR_REG_mask.SUBTRACT(_NON_ALLOCATABLE_REG_mask);
|
||||
|
||||
// r27 is not allocatable when compressed oops is on, compressed klass
|
||||
// pointers doesn't use r27 after JDK-8234794
|
||||
if (UseCompressedOops) {
|
||||
// r27 is not allocatable when compressed oops is on and heapbase is not
|
||||
// zero, compressed klass pointers doesn't use r27 after JDK-8234794
|
||||
if (UseCompressedOops && CompressedOops::ptrs_base() != NULL) {
|
||||
_NO_SPECIAL_REG32_mask.Remove(OptoReg::as_OptoReg(r27->as_VMReg()));
|
||||
_NO_SPECIAL_REG_mask.SUBTRACT(_HEAPBASE_REG_mask);
|
||||
_NO_SPECIAL_PTR_REG_mask.SUBTRACT(_HEAPBASE_REG_mask);
|
||||
@ -7477,19 +7477,17 @@ instruct storeN(iRegN src, memory4 mem)
|
||||
ins_pipe(istore_reg_mem);
|
||||
%}
|
||||
|
||||
instruct storeImmN0(iRegIHeapbase heapbase, immN0 zero, memory4 mem)
|
||||
instruct storeImmN0(immN0 zero, memory4 mem)
|
||||
%{
|
||||
match(Set mem (StoreN mem zero));
|
||||
predicate(CompressedOops::base() == NULL &&
|
||||
CompressedKlassPointers::base() == NULL &&
|
||||
(!needs_releasing_store(n)));
|
||||
predicate(!needs_releasing_store(n));
|
||||
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "strw rheapbase, $mem\t# compressed ptr (rheapbase==0)" %}
|
||||
format %{ "strw zr, $mem\t# compressed ptr" %}
|
||||
|
||||
ins_encode(aarch64_enc_strw(heapbase, mem));
|
||||
ins_encode(aarch64_enc_strw0(mem));
|
||||
|
||||
ins_pipe(istore_reg_mem);
|
||||
ins_pipe(istore_mem);
|
||||
%}
|
||||
|
||||
// Store Float
|
||||
|
@ -2185,6 +2185,10 @@ void MacroAssembler::verify_heapbase(const char* msg) {
|
||||
#if 0
|
||||
assert (UseCompressedOops || UseCompressedClassPointers, "should be compressed");
|
||||
assert (Universe::heap() != NULL, "java heap should be initialized");
|
||||
if (!UseCompressedOops || Universe::ptr_base() == NULL) {
|
||||
// rheapbase is allocated as general register
|
||||
return;
|
||||
}
|
||||
if (CheckCompressedOops) {
|
||||
Label ok;
|
||||
push(1 << rscratch1->encoding(), sp); // cmpptr trashes rscratch1
|
||||
|
Loading…
x
Reference in New Issue
Block a user