From 931ebb25cf5a07cf39d238db91831b5eff65a500 Mon Sep 17 00:00:00 2001 From: Vladimir Marko Date: Fri, 25 Aug 2023 08:00:59 +0000 Subject: riscv64: Fix register usage in `GenerateStaticOrDirectCall()`. Test: aosp_cf_riscv64_phone boots with manually enabled HInvokeStaticOrDirect code generation. Bug: 283082089 Change-Id: Ibc0d98fd0f194d35694a990e5829c7611153f4f2 --- compiler/optimizing/code_generator_riscv64.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'compiler/optimizing') diff --git a/compiler/optimizing/code_generator_riscv64.cc b/compiler/optimizing/code_generator_riscv64.cc index e22c1a64a1..2187957db8 100644 --- a/compiler/optimizing/code_generator_riscv64.cc +++ b/compiler/optimizing/code_generator_riscv64.cc @@ -4179,13 +4179,13 @@ void CodeGeneratorRISCV64::GenerateStaticOrDirectCall(HInvokeStaticOrDirect* inv kNativeStackAlignment, GetCriticalNativeDirectCallFrameSize>(invoke); if (invoke->GetMethodLoadKind() == MethodLoadKind::kBootImageLinkTimePcRelative) { - __ Jalr(TMP); + // Entrypoint is already loaded in RA. } else { - // TMP2 = callee_method->ptr_sized_fields_.data_; // EntryPointFromJni + // RA = callee_method->ptr_sized_fields_.data_; // EntryPointFromJni MemberOffset offset = ArtMethod::EntryPointFromJniOffset(kRiscv64PointerSize); - __ Loadd(TMP2, callee_method.AsRegister(), offset.Int32Value()); - __ Jalr(TMP2); + __ Loadd(RA, callee_method.AsRegister(), offset.Int32Value()); } + __ Jalr(RA); RecordPcInfo(invoke, invoke->GetDexPc(), slow_path); // The result is returned the same way in native ABI and managed ABI. No result conversion is // needed, see comments in `Riscv64JniCallingConvention::RequiresSmallResultTypeExtension()`. -- cgit v1.2.3-59-g8ed1b