8294366: RISC-V: Partially mark out incompressible regions

Reviewed-by: fyang, yadongwang
This commit is contained in:
Xiaolin Zheng 2022-10-08 06:41:45 +00:00 committed by Fei Yang
parent 495c043533
commit 542cc602a7
8 changed files with 75 additions and 61 deletions

View file

@ -241,6 +241,7 @@ void MacroAssembler::set_last_Java_frame(Register last_java_sp,
set_last_Java_frame(last_java_sp, last_java_fp, target(L), tmp);
} else {
L.add_patch_at(code(), locator());
IncompressibleRegion ir(this); // the label address will be patched back.
set_last_Java_frame(last_java_sp, last_java_fp, pc() /* Patched later */, tmp);
}
}
@ -549,6 +550,7 @@ void MacroAssembler::unimplemented(const char* what) {
}
void MacroAssembler::emit_static_call_stub() {
IncompressibleRegion ir(this); // Fixed length: see CompiledStaticCall::to_interp_stub_size().
// CompiledDirectStaticCall::set_to_interpreted knows the
// exact layout of this stub.
@ -751,6 +753,7 @@ void MacroAssembler::la(Register Rd, const Address &adr) {
}
void MacroAssembler::la(Register Rd, Label &label) {
IncompressibleRegion ir(this); // the label address may be patched back.
la(Rd, target(label));
}
@ -2437,6 +2440,7 @@ void MacroAssembler::far_jump(Address entry, Register tmp) {
assert(entry.rspec().type() == relocInfo::external_word_type
|| entry.rspec().type() == relocInfo::runtime_call_type
|| entry.rspec().type() == relocInfo::none, "wrong entry relocInfo type");
IncompressibleRegion ir(this); // Fixed length: see MacroAssembler::far_branch_size()
int32_t offset = 0;
if (far_branches()) {
// We can use auipc + jalr here because we know that the total size of
@ -2455,6 +2459,7 @@ void MacroAssembler::far_call(Address entry, Register tmp) {
assert(entry.rspec().type() == relocInfo::external_word_type
|| entry.rspec().type() == relocInfo::runtime_call_type
|| entry.rspec().type() == relocInfo::none, "wrong entry relocInfo type");
IncompressibleRegion ir(this); // Fixed length: see MacroAssembler::far_branch_size()
int32_t offset = 0;
if (far_branches()) {
// We can use auipc + jalr here because we know that the total size of