mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 19:44:41 +02:00
8294366: RISC-V: Partially mark out incompressible regions
Reviewed-by: fyang, yadongwang
This commit is contained in:
parent
495c043533
commit
542cc602a7
8 changed files with 75 additions and 61 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue