summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Gampe <agampe@google.com>2015-01-31 03:14:59 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-01-31 03:14:59 +0000
commitf50b07606f9e6ef75e0aa60b9f87a20d377c7884 (patch)
treeda373274687345994d647d8bd822537342a5087c
parente9777476b68c43fed1fffaf4a1a1fb93fcd24103 (diff)
parent6461d19fe1132ec25b92d008c1a7b57f5ecc134b (diff)
downloadart-f50b07606f9e6ef75e0aa60b9f87a20d377c7884.tar.gz
art-f50b07606f9e6ef75e0aa60b9f87a20d377c7884.tar.bz2
art-f50b07606f9e6ef75e0aa60b9f87a20d377c7884.zip
Merge "Add Mips64 art_quick_proxy_invoke_handler assembly."
-rw-r--r--runtime/arch/mips64/quick_entrypoints_mips64.S24
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 65bdda808b..60e692be00 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