summaryrefslogtreecommitdiff
path: root/runtime/nterp_helpers.cc
diff options
context:
space:
mode:
author Jaeheon Yi <jaeheon@google.com> 2023-10-31 22:12:00 -0700
committer Jaeheon Yi <jaeheon@google.com> 2023-11-14 09:01:50 +0000
commit97e821c02dbcc82b2d3c67f8cb15fe620b196fff (patch)
tree08cb19c9f2e960b27152e1fd31f2610097a3d1e9 /runtime/nterp_helpers.cc
parent0a837ee0281095a4f806274a5c3644255564300a (diff)
riscv64: invoke opcodes, range variants
Also hotfix for slow path 'L' ref loads: clear upper bits for correctness. Also disable 01 fastpath to rethink approach for 'L' ref loads vs shorty cost. See invoke.S for notes on code structure. Test: Run these opcodes against all interpreter tests on a Linux RISC-V VM. (1) setup lunch aosp_riscv64-trunk-userdebug export ART_TEST_SSH_USER=ubuntu export ART_TEST_SSH_HOST=localhost export ART_TEST_SSH_PORT=10001 export ART_TEST_ON_VM=true . art/tools/buildbot-utils.sh art/tools/buildbot-build.sh --target # Create, boot and configure the VM. art/tools/buildbot-vm.sh create art/tools/buildbot-vm.sh boot art/tools/buildbot-vm.sh setup-ssh # password: 'ubuntu' art/tools/buildbot-cleanup-device.sh art/tools/buildbot-setup-device.sh art/tools/buildbot-sync.sh (2) test art/test.py --target -r --no-prebuild --ndebug --64 -j 12 --cdex-none --interpreter Clean with `m check_cfi`. Bug: 283082047 Change-Id: I20426fd1e7b397f7fce51a1f43661056d5b8e844
Diffstat (limited to 'runtime/nterp_helpers.cc')
-rw-r--r--runtime/nterp_helpers.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/runtime/nterp_helpers.cc b/runtime/nterp_helpers.cc
index f411e73679..83057f8910 100644
--- a/runtime/nterp_helpers.cc
+++ b/runtime/nterp_helpers.cc
@@ -279,6 +279,11 @@ bool CanMethodUseNterp(ArtMethod* method, InstructionSet isa) {
case Instruction::INVOKE_DIRECT:
case Instruction::INVOKE_STATIC:
case Instruction::INVOKE_INTERFACE:
+ case Instruction::INVOKE_VIRTUAL_RANGE:
+ case Instruction::INVOKE_SUPER_RANGE:
+ case Instruction::INVOKE_DIRECT_RANGE:
+ case Instruction::INVOKE_STATIC_RANGE:
+ case Instruction::INVOKE_INTERFACE_RANGE:
case Instruction::NEG_INT:
case Instruction::NOT_INT:
case Instruction::NEG_LONG: