--- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Thu May 09 07:21:32 2019 -0400
+++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Thu May 09 14:26:03 2019 +0200
@@ -2131,7 +2131,7 @@
if (CheckCompressedOops) {
Label ok;
push(1 << rscratch1->encoding(), sp); // cmpptr trashes rscratch1
- cmpptr(rheapbase, ExternalAddress((address)Universe::narrow_ptrs_base_addr()));
+ cmpptr(rheapbase, ExternalAddress((address)CompressedOops::ptrs_base_addr()));
br(Assembler::EQ, ok);
stop(msg);
bind(ok);
@@ -2264,9 +2264,9 @@
{
if (UseCompressedOops) {
if (Universe::is_fully_initialized()) {
- mov(rheapbase, Universe::narrow_ptrs_base());
+ mov(rheapbase, CompressedOops::ptrs_base());
} else {
- lea(rheapbase, ExternalAddress((address)Universe::narrow_ptrs_base_addr()));
+ lea(rheapbase, ExternalAddress((address)CompressedOops::ptrs_base_addr()));
ldr(rheapbase, Address(rheapbase));
}
}
@@ -3709,11 +3709,11 @@
void MacroAssembler::cmp_klass(Register oop, Register trial_klass, Register tmp) {
if (UseCompressedClassPointers) {
ldrw(tmp, Address(oop, oopDesc::klass_offset_in_bytes()));
- if (Universe::narrow_klass_base() == NULL) {
- cmp(trial_klass, tmp, LSL, Universe::narrow_klass_shift());
+ if (CompressedKlassPointers::base() == NULL) {
+ cmp(trial_klass, tmp, LSL, CompressedKlassPointers::shift());
return;
- } else if (((uint64_t)Universe::narrow_klass_base() & 0xffffffff) == 0
- && Universe::narrow_klass_shift() == 0) {
+ } else if (((uint64_t)CompressedKlassPointers::base() & 0xffffffff) == 0
+ && CompressedKlassPointers::shift() == 0) {
// Only the bottom 32 bits matter
cmpw(trial_klass, tmp);
return;
@@ -3754,9 +3754,9 @@
verify_heapbase("MacroAssembler::encode_heap_oop: heap base corrupted?");
#endif
verify_oop(s, "broken oop in encode_heap_oop");
- if (Universe::narrow_oop_base() == NULL) {
- if (Universe::narrow_oop_shift() != 0) {
- assert (LogMinObjAlignmentInBytes == Universe::narrow_oop_shift(), "decode alg wrong");
+ if (CompressedOops::base() == NULL) {
+ if (CompressedOops::shift() != 0) {
+ assert (LogMinObjAlignmentInBytes == CompressedOops::shift(), "decode alg wrong");
lsr(d, s, LogMinObjAlignmentInBytes);
} else {
mov(d, s);
@@ -3787,11 +3787,11 @@
}
#endif
verify_oop(r, "broken oop in encode_heap_oop_not_null");
- if (Universe::narrow_oop_base() != NULL) {
+ if (CompressedOops::base() != NULL) {
sub(r, r, rheapbase);
}
- if (Universe::narrow_oop_shift() != 0) {
- assert (LogMinObjAlignmentInBytes == Universe::narrow_oop_shift(), "decode alg wrong");
+ if (CompressedOops::shift() != 0) {
+ assert (LogMinObjAlignmentInBytes == CompressedOops::shift(), "decode alg wrong");
lsr(r, r, LogMinObjAlignmentInBytes);
}
}
@@ -3809,12 +3809,12 @@
verify_oop(src, "broken oop in encode_heap_oop_not_null2");
Register data = src;
- if (Universe::narrow_oop_base() != NULL) {
+ if (CompressedOops::base() != NULL) {
sub(dst, src, rheapbase);
data = dst;
}
- if (Universe::narrow_oop_shift() != 0) {
- assert (LogMinObjAlignmentInBytes == Universe::narrow_oop_shift(), "decode alg wrong");
+ if (CompressedOops::shift() != 0) {
+ assert (LogMinObjAlignmentInBytes == CompressedOops::shift(), "decode alg wrong");
lsr(dst, data, LogMinObjAlignmentInBytes);
data = dst;
}
@@ -3826,9 +3826,9 @@
#ifdef ASSERT
verify_heapbase("MacroAssembler::decode_heap_oop: heap base corrupted?");
#endif
- if (Universe::narrow_oop_base() == NULL) {
- if (Universe::narrow_oop_shift() != 0 || d != s) {
- lsl(d, s, Universe::narrow_oop_shift());
+ if (CompressedOops::base() == NULL) {
+ if (CompressedOops::shift() != 0 || d != s) {
+ lsl(d, s, CompressedOops::shift());
}
} else {
Label done;
@@ -3847,15 +3847,15 @@
// Cannot assert, unverified entry point counts instructions (see .ad file)
// vtableStubs also counts instructions in pd_code_size_limit.
// Also do not verify_oop as this is called by verify_oop.
- if (Universe::narrow_oop_shift() != 0) {
- assert(LogMinObjAlignmentInBytes == Universe::narrow_oop_shift(), "decode alg wrong");
- if (Universe::narrow_oop_base() != NULL) {
+ if (CompressedOops::shift() != 0) {
+ assert(LogMinObjAlignmentInBytes == CompressedOops::shift(), "decode alg wrong");
+ if (CompressedOops::base() != NULL) {
add(r, rheapbase, r, Assembler::LSL, LogMinObjAlignmentInBytes);
} else {
add(r, zr, r, Assembler::LSL, LogMinObjAlignmentInBytes);
}
} else {
- assert (Universe::narrow_oop_base() == NULL, "sanity");
+ assert (CompressedOops::base() == NULL, "sanity");
}
}
@@ -3865,15 +3865,15 @@
// Cannot assert, unverified entry point counts instructions (see .ad file)
// vtableStubs also counts instructions in pd_code_size_limit.
// Also do not verify_oop as this is called by verify_oop.
- if (Universe::narrow_oop_shift() != 0) {
- assert(LogMinObjAlignmentInBytes == Universe::narrow_oop_shift(), "decode alg wrong");
- if (Universe::narrow_oop_base() != NULL) {
+ if (CompressedOops::shift() != 0) {
+ assert(LogMinObjAlignmentInBytes == CompressedOops::shift(), "decode alg wrong");
+ if (CompressedOops::base() != NULL) {
add(dst, rheapbase, src, Assembler::LSL, LogMinObjAlignmentInBytes);
} else {
add(dst, zr, src, Assembler::LSL, LogMinObjAlignmentInBytes);
}
} else {
- assert (Universe::narrow_oop_base() == NULL, "sanity");
+ assert (CompressedOops::base() == NULL, "sanity");
if (dst != src) {
mov(dst, src);
}
@@ -3881,9 +3881,9 @@
}
void MacroAssembler::encode_klass_not_null(Register dst, Register src) {
- if (Universe::narrow_klass_base() == NULL) {
- if (Universe::narrow_klass_shift() != 0) {
- assert (LogKlassAlignmentInBytes == Universe::narrow_klass_shift(), "decode alg wrong");
+ if (CompressedKlassPointers::base() == NULL) {
+ if (CompressedKlassPointers::shift() != 0) {
+ assert (LogKlassAlignmentInBytes == CompressedKlassPointers::shift(), "decode alg wrong");
lsr(dst, src, LogKlassAlignmentInBytes);
} else {
if (dst != src) mov(dst, src);
@@ -3892,17 +3892,17 @@
}
if (use_XOR_for_compressed_class_base) {
- if (Universe::narrow_klass_shift() != 0) {
- eor(dst, src, (uint64_t)Universe::narrow_klass_base());
+ if (CompressedKlassPointers::shift() != 0) {
+ eor(dst, src, (uint64_t)CompressedKlassPointers::base());
lsr(dst, dst, LogKlassAlignmentInBytes);
} else {
- eor(dst, src, (uint64_t)Universe::narrow_klass_base());
+ eor(dst, src, (uint64_t)CompressedKlassPointers::base());
}
return;
}
- if (((uint64_t)Universe::narrow_klass_base() & 0xffffffff) == 0
- && Universe::narrow_klass_shift() == 0) {
+ if (((uint64_t)CompressedKlassPointers::base() & 0xffffffff) == 0
+ && CompressedKlassPointers::shift() == 0) {
movw(dst, src);
return;
}
@@ -3913,10 +3913,10 @@
Register rbase = dst;
if (dst == src) rbase = rheapbase;
- mov(rbase, (uint64_t)Universe::narrow_klass_base());
+ mov(rbase, (uint64_t)CompressedKlassPointers::base());
sub(dst, src, rbase);
- if (Universe::narrow_klass_shift() != 0) {
- assert (LogKlassAlignmentInBytes == Universe::narrow_klass_shift(), "decode alg wrong");
+ if (CompressedKlassPointers::shift() != 0) {
+ assert (LogKlassAlignmentInBytes == CompressedKlassPointers::shift(), "decode alg wrong");
lsr(dst, dst, LogKlassAlignmentInBytes);
}
if (dst == src) reinit_heapbase();
@@ -3930,9 +3930,9 @@
Register rbase = dst;
assert (UseCompressedClassPointers, "should only be used for compressed headers");
- if (Universe::narrow_klass_base() == NULL) {
- if (Universe::narrow_klass_shift() != 0) {
- assert(LogKlassAlignmentInBytes == Universe::narrow_klass_shift(), "decode alg wrong");
+ if (CompressedKlassPointers::base() == NULL) {
+ if (CompressedKlassPointers::shift() != 0) {
+ assert(LogKlassAlignmentInBytes == CompressedKlassPointers::shift(), "decode alg wrong");
lsl(dst, src, LogKlassAlignmentInBytes);
} else {
if (dst != src) mov(dst, src);
@@ -3941,20 +3941,20 @@
}
if (use_XOR_for_compressed_class_base) {
- if (Universe::narrow_klass_shift() != 0) {
+ if (CompressedKlassPointers::shift() != 0) {
lsl(dst, src, LogKlassAlignmentInBytes);
- eor(dst, dst, (uint64_t)Universe::narrow_klass_base());
+ eor(dst, dst, (uint64_t)CompressedKlassPointers::base());
} else {
- eor(dst, src, (uint64_t)Universe::narrow_klass_base());
+ eor(dst, src, (uint64_t)CompressedKlassPointers::base());
}
return;
}
- if (((uint64_t)Universe::narrow_klass_base() & 0xffffffff) == 0
- && Universe::narrow_klass_shift() == 0) {
+ if (((uint64_t)CompressedKlassPointers::base() & 0xffffffff) == 0
+ && CompressedKlassPointers::shift() == 0) {
if (dst != src)
movw(dst, src);
- movk(dst, (uint64_t)Universe::narrow_klass_base() >> 32, 32);
+ movk(dst, (uint64_t)CompressedKlassPointers::base() >> 32, 32);
return;
}
@@ -3962,9 +3962,9 @@
// vtableStubs also counts instructions in pd_code_size_limit.
// Also do not verify_oop as this is called by verify_oop.
if (dst == src) rbase = rheapbase;
- mov(rbase, (uint64_t)Universe::narrow_klass_base());
- if (Universe::narrow_klass_shift() != 0) {
- assert(LogKlassAlignmentInBytes == Universe::narrow_klass_shift(), "decode alg wrong");
+ mov(rbase, (uint64_t)CompressedKlassPointers::base());
+ if (CompressedKlassPointers::shift() != 0) {
+ assert(LogKlassAlignmentInBytes == CompressedKlassPointers::shift(), "decode alg wrong");
add(dst, rbase, src, Assembler::LSL, LogKlassAlignmentInBytes);
} else {
add(dst, rbase, src);
@@ -4003,7 +4003,7 @@
InstructionMark im(this);
RelocationHolder rspec = metadata_Relocation::spec(index);
code_section()->relocate(inst_mark(), rspec);
- narrowKlass nk = Klass::encode_klass(k);
+ narrowKlass nk = CompressedKlassPointers::encode(k);
movz(dst, (nk >> 16), 16);
movk(dst, nk & 0xffff);
}