diff options
author | 2024-11-18 08:56:10 +0000 | |
---|---|---|
committer | 2024-11-18 15:36:36 +0000 | |
commit | 7a97baeb4f553cdf6c9b4db2f9bae39cb0b74e6d (patch) | |
tree | ce19145bab271ae95cddf203aaaaebeeb8ef5c8a | |
parent | 35e5520291f491f41c725949203537c15d3b7656 (diff) |
riscv64: Use `Stored()` insted of `Sd()` as the offset is too large.
Using `Sd()` triggered debug check failure in 597-deopt-busy-loop:
`assembler_riscv64.h:2403 Check failed: IsInt<12>(imm12) 2616`
Test: 597-deopt-busy-loop passed in debug mode:
export SOONG_ALLOW_MISSING_DEPENDENCIES=true
export ART_TEST_SSH_USER=ubuntu
export ART_TEST_SSH_HOST=localhost
export ART_TEST_SSH_PORT=10002
export ART_TEST_ON_VM=true
. ./build/envsetup.sh
lunch riscv64-trunk_staging-eng
art/tools/buildbot-build.sh --target -j72 #--installclean
. art/tools/buildbot-utils.sh
art/tools/buildbot-cleanup-device.sh
art/tools/buildbot-setup-device.sh
art/tools/buildbot-sync.sh
art/test/run-test --chroot $ART_TEST_CHROOT \
--64 --optimizing 597-deopt-busy-loop
Change-Id: I30f4b90ac3b041d713960411e6670f4129beadf9
-rw-r--r-- | compiler/optimizing/code_generator_riscv64.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/compiler/optimizing/code_generator_riscv64.cc b/compiler/optimizing/code_generator_riscv64.cc index d6f0d59bda..c2d82b8033 100644 --- a/compiler/optimizing/code_generator_riscv64.cc +++ b/compiler/optimizing/code_generator_riscv64.cc @@ -2666,8 +2666,10 @@ void InstructionCodeGeneratorRISCV64::GenerateMethodEntryExitHook(HInstruction* __ Addi(tmp, tmp, -dchecked_integral_cast<int32_t>(kNumEntriesForWallClock * sizeof(void*))); __ Blt(tmp, tmp2, slow_path->GetEntryLabel()); - // Update the index in the `Thread`. - __ Sd(tmp, TR, trace_buffer_curr_entry_offset); + // Update the index in the `Thread`. Temporarily free `tmp2` to be used by `Stored()`. + temps.FreeXRegister(tmp2); + __ Stored(tmp, TR, trace_buffer_curr_entry_offset); + tmp2 = temps.AllocateXRegister(); // Record method pointer and trace action. __ Ld(tmp2, SP, 0); |