diff --git a/src/codegen/riscv/macro-assembler-riscv.cc b/src/codegen/riscv/macro-assembler-riscv.cc index 3deac90238..e9ac398752 100644 --- a/src/codegen/riscv/macro-assembler-riscv.cc +++ b/src/codegen/riscv/macro-assembler-riscv.cc @@ -6171,17 +6171,9 @@ Register GetRegisterThatIsNotOneOf(Register reg1, Register reg2, Register reg3, } void TurboAssembler::ComputeCodeStartAddress(Register dst) { - // This push on ra and the pop below together ensure that we restore the - // register ra, which is needed while computing the code start address. - push(ra); - - auipc(ra, 0); - addi(ra, ra, kInstrSize * 2); // ra = address of li - int pc = pc_offset(); - li(dst, Operand(pc)); - SubWord(dst, ra, dst); - - pop(ra); // Restore ra + auto pc = -pc_offset(); + auipc(dst, 0); + if(pc != 0) SubWord(dst, dst, pc); } void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit,