diff options
author | Douglas Leung <douglas.leung@imgtec.com> | 2015-01-30 18:13:58 -0800 |
---|---|---|
committer | Douglas Leung <douglas.leung@imgtec.com> | 2015-01-30 18:50:58 -0800 |
commit | 6461d19fe1132ec25b92d008c1a7b57f5ecc134b (patch) | |
tree | da373274687345994d647d8bd822537342a5087c | |
parent | e9777476b68c43fed1fffaf4a1a1fb93fcd24103 (diff) | |
download | art-6461d19fe1132ec25b92d008c1a7b57f5ecc134b.zip art-6461d19fe1132ec25b92d008c1a7b57f5ecc134b.tar.gz art-6461d19fe1132ec25b92d008c1a7b57f5ecc134b.tar.bz2 |
Add Mips64 art_quick_proxy_invoke_handler assembly.
This fixes a crash during boot.
Change-Id: Ia69f3a38757355d1c33095ab59ce659a9b4ef737
-rw-r--r-- | runtime/arch/mips64/quick_entrypoints_mips64.S | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/runtime/arch/mips64/quick_entrypoints_mips64.S b/runtime/arch/mips64/quick_entrypoints_mips64.S index 65bdda8..60e692b 100644 --- a/runtime/arch/mips64/quick_entrypoints_mips64.S +++ b/runtime/arch/mips64/quick_entrypoints_mips64.S @@ -756,7 +756,29 @@ END \name GENERATE_ALL_ALLOC_ENTRYPOINTS UNIMPLEMENTED art_quick_test_suspend -UNIMPLEMENTED art_quick_proxy_invoke_handler + + /* + * Called by managed code that is attempting to call a method on a proxy class. On entry + * r0 holds the proxy method; r1, r2 and r3 may contain arguments. + */ + .extern artQuickProxyInvokeHandler +ENTRY art_quick_proxy_invoke_handler + SETUP_REFS_AND_ARGS_CALLEE_SAVE_FRAME + sd $a0, 0($sp) # place proxy method at bottom of frame + move $a2, rSELF # pass Thread::Current + jal artQuickProxyInvokeHandler # (Method* proxy method, receiver, Thread*, SP) + move $a3, $sp # pass $sp + ld $t0, THREAD_EXCEPTION_OFFSET(rSELF) # load Thread::Current()->exception_ + daddiu $sp, $sp, REFS_AND_ARGS_MINUS_REFS_SIZE # skip a0-a7 and f12-f19 + RESTORE_REFS_ONLY_CALLEE_SAVE_FRAME + bne $t0, $zero, 1f + dmtc1 $v0, $f0 # place return value to FP return value + jalr $zero, $ra + dmtc1 $v1, $f1 # place return value to FP return value +1: + DELIVER_PENDING_EXCEPTION +END art_quick_proxy_invoke_handler + UNIMPLEMENTED art_quick_imt_conflict_trampoline .extern artQuickResolutionTrampoline |