Few cleanups in nterp.
- No need to manually save the ArtMethod, it's already saved in
SPILL_ALL_ARGUMENTS
- Remove unused parameter to SET_VREG_OBJECT
- Fix comment on common_errArrayIndex
Test: test.py
Bug: 112676029
Change-Id: I012a2ccac96c175be6107e762c620b7d5eba8f1c
diff --git a/runtime/interpreter/mterp/arm64ng/main.S b/runtime/interpreter/mterp/arm64ng/main.S
index 2dbfe58..a0a00a7 100644
--- a/runtime/interpreter/mterp/arm64ng/main.S
+++ b/runtime/interpreter/mterp/arm64ng/main.S
@@ -202,7 +202,7 @@
str \reg, [xFP, \vreg, uxtw #2]
str wzr, [xREFS, \vreg, uxtw #2]
.endm
-.macro SET_VREG_OBJECT reg, vreg, tmpreg
+.macro SET_VREG_OBJECT reg, vreg
str \reg, [xFP, \vreg, uxtw #2]
str \reg, [xREFS, \vreg, uxtw #2]
.endm
@@ -1546,14 +1546,12 @@
// TODO: Get shorty in a better way and remove below
SPILL_ALL_ARGUMENTS
- // Save method in callee-save xINST
- mov xINST, x0
bl NterpGetShorty
// Save shorty in callee-save xIBASE.
mov xIBASE, x0
RESTORE_ALL_ARGUMENTS
- ldr xPC, [xINST, #ART_METHOD_DATA_OFFSET_64]
+ ldr xPC, [x0, #ART_METHOD_DATA_OFFSET_64]
// Setup the stack for executing the method.
SETUP_STACK_FRAME xPC, xREFS, xFP, CFI_REFS, load_ins=1
@@ -1632,7 +1630,7 @@
EXPORT_PC
bl art_quick_throw_div_zero
-// Expect array in w0, index in w1, length in w2
+// Expect index in w1, length in w3.
common_errArrayIndex:
EXPORT_PC
mov x0, x1
@@ -1844,7 +1842,7 @@
ldr w0, [x0, #ART_FIELD_DECLARING_CLASS_OFFSET]
cbnz wMR, 7f
6:
- lsr w2, wINST, #8 // w1 <- A
+ lsr w2, wINST, #8 // w2 <- A
GET_VREG w2, w2
add ip, x0, x1
stlr w2, [ip]
@@ -2005,7 +2003,7 @@
cbnz wMR, 4f
1:
lsr w2, wINST, #8 // w2<- A
- GET_VREG w0, w2 // w2<- vA (object)
+ GET_VREG w0, w2 // w0<- vA (object)
cbz w0, 2f
bl art_quick_check_instance_of
2:
diff --git a/runtime/interpreter/mterp/arm64ng/other.S b/runtime/interpreter/mterp/arm64ng/other.S
index d7efe28..56a8086 100644
--- a/runtime/interpreter/mterp/arm64ng/other.S
+++ b/runtime/interpreter/mterp/arm64ng/other.S
@@ -228,7 +228,7 @@
FETCH_ADVANCE_INST 1 // advance rPC, load wINST
GET_INST_OPCODE ip // extract opcode from wINST
.if $is_object
- SET_VREG_OBJECT w0, w2, w1 // fp[AA]<- r0
+ SET_VREG_OBJECT w0, w2 // fp[AA]<- r0
.else
SET_VREG w0, w2 // fp[AA]<- r0
.endif
diff --git a/runtime/interpreter/mterp/x86_64ng/main.S b/runtime/interpreter/mterp/x86_64ng/main.S
index 2025696..7a8fe6e 100644
--- a/runtime/interpreter/mterp/x86_64ng/main.S
+++ b/runtime/interpreter/mterp/x86_64ng/main.S
@@ -1462,8 +1462,6 @@
movq %xmm6, 48(%rsp)
movq %xmm7, 56(%rsp)
- // Save method in callee-save rbx.
- movq %rdi, %rbx
call SYMBOL(NterpGetShorty)
// Save shorty in callee-save rbp.
movq %rax, %rbp
@@ -1567,6 +1565,7 @@
EXPORT_PC
call art_quick_throw_div_zero
+// Expect array in edi, index in esi.
common_errArrayIndex:
EXPORT_PC
movl MIRROR_ARRAY_LENGTH_OFFSET(%edi), %eax