diff options
author | Andreas Gampe <agampe@google.com> | 2015-01-31 01:12:35 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-01-31 01:13:29 +0000 |
commit | e550d2309b90b0842b77cff1f764b756bc2679e3 (patch) | |
tree | ed6cb1b5f666e028459366c77b5b0468285651cc | |
parent | babecc483276b46d84cb83d4f01e577228827305 (diff) | |
parent | cc7c39d747f5802282adcc51ffe44405f116f84b (diff) | |
download | art-e550d2309b90b0842b77cff1f764b756bc2679e3.zip art-e550d2309b90b0842b77cff1f764b756bc2679e3.tar.gz art-e550d2309b90b0842b77cff1f764b756bc2679e3.tar.bz2 |
Merge "ART: Add Mips64 resolution trampoline assembly"
-rw-r--r-- | runtime/arch/mips64/quick_entrypoints_mips64.S | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/runtime/arch/mips64/quick_entrypoints_mips64.S b/runtime/arch/mips64/quick_entrypoints_mips64.S index 3430eb5..65bdda8 100644 --- a/runtime/arch/mips64/quick_entrypoints_mips64.S +++ b/runtime/arch/mips64/quick_entrypoints_mips64.S @@ -758,7 +758,24 @@ GENERATE_ALL_ALLOC_ENTRYPOINTS UNIMPLEMENTED art_quick_test_suspend UNIMPLEMENTED art_quick_proxy_invoke_handler UNIMPLEMENTED art_quick_imt_conflict_trampoline -UNIMPLEMENTED art_quick_resolution_trampoline + + .extern artQuickResolutionTrampoline +ENTRY art_quick_resolution_trampoline + SETUP_REFS_AND_ARGS_CALLEE_SAVE_FRAME + move $a2, rSELF # pass Thread::Current + jal artQuickResolutionTrampoline # (Method* called, receiver, Thread*, SP) + move $a3, $sp # pass $sp + beq $v0, $zero, 1f + lwu $a0, 0($sp) # load resolved method in $a0 + # artQuickResolutionTrampoline puts resolved method in *SP + RESTORE_REFS_AND_ARGS_CALLEE_SAVE_FRAME + move $t9, $v0 # code pointer must be in $t9 to generate the global pointer + jalr $zero, $t9 # tail call to method + nop +1: + RESTORE_REFS_AND_ARGS_CALLEE_SAVE_FRAME + DELIVER_PENDING_EXCEPTION +END art_quick_resolution_trampoline .extern artQuickGenericJniTrampoline .extern artQuickGenericJniEndTrampoline |