Remove use of compiled invoke stubs from portable.

Now the invoke stubs can be safely removed. Tested and working on ARM,
basic testing done on x86/MIPS, but portable is currently broken for them
even without the change.

Change-Id: Ib73f2b7aa9d81f5f0e1e817d16b9bec464c5a5aa
diff --git a/src/oat/runtime/mips/runtime_support_mips.S b/src/oat/runtime/mips/runtime_support_mips.S
index 480e5c8..c8f0809 100644
--- a/src/oat/runtime/mips/runtime_support_mips.S
+++ b/src/oat/runtime/mips/runtime_support_mips.S
@@ -427,15 +427,18 @@
 INVOKE_TRAMPOLINE art_quick_invoke_virtual_trampoline_with_access_check, artInvokeVirtualTrampolineWithAccessCheck
 
     /*
-     * Invocation stub.
+     * Common invocation stub for portable and quick.
      * On entry:
      *   a0 = method pointer
      *   a1 = argument array or NULL for no argument methods
      *   a2 = size of argument array in bytes
      *   a3 = (managed) thread pointer
-     *   [sp + 16] = JValue* result for non-floating point returns
-     *   [sp + 20] = JValue* result for floating point returns
+     *   [sp + 16] = JValue* result
+     *   [sp + 20] = result type char
      */
+     .type art_portable_invoke_stub, %function
+     .global art_portable_invoke_stub
+art_portable_invoke_stub:
 ENTRY art_quick_invoke_stub
     GENERATE_GLOBAL_POINTER
     sw    $a0, 0($sp)           # save out a0
@@ -476,13 +479,20 @@
     addiu $sp, $sp, 16
     .cfi_adjust_cfa_offset -16
     lw    $t0, 16($sp)          # get result pointer
+    lw    $t1, 20($sp)          # get result type char
+    li    $t2, 68               # put char 'D' into t2
+    beq   $t1, $t2, 1f          # branch if result type char == 'D'
+    li    $t3, 70               # put char 'F' into t3
+    beq   $t1, $t3, 1f          # branch if result type char == 'F'
     sw    $v0, 0($t0)           # store the result
+    jr    $ra
     sw    $v1, 4($t0)           # store the other half of the result
-    lw    $t0, 20($sp)          # get floating point result pointer
+1:
     s.s   $f0, 0($t0)           # store floating point result
     jr    $ra
     s.s   $f1, 4($t0)           # store other half of floating point result
 END art_quick_invoke_stub
+    .size art_portable_invoke_stub, .-art_portable_invoke_stub
 
     /*
      * Entry point of native methods when JNI bug compatibility is enabled.