Enter interpreter stub.

Untested code that when set as the code for a AbstractMethod* will force the
next invocation of the Method to transition into the interpreter.

Change-Id: I557bca3a2caf4a78551b39aa5ac4ffb4c486105b
diff --git a/src/oat/runtime/mips/runtime_support_mips.S b/src/oat/runtime/mips/runtime_support_mips.S
index efd3ede..b49d5a5 100644
--- a/src/oat/runtime/mips/runtime_support_mips.S
+++ b/src/oat/runtime/mips/runtime_support_mips.S
@@ -852,7 +852,7 @@
     SETUP_REF_AND_ARGS_CALLEE_SAVE_FRAME
     sw      $a0, 0($sp)            # place proxy method at bottom of frame
     move    $a2, rSELF             # pass Thread::Current
-    jal     artProxyInvokeHandler  # (Method* proxy method, receiver, Thread*, args...)
+    jal     artProxyInvokeHandler  # (Method* proxy method, receiver, Thread*, SP)
     move    $a3, $sp               # pass $sp
     lw      $t0, THREAD_EXCEPTION_OFFSET(rSELF) # load Thread::Current()->exception_
     lw      $ra, 44($sp)           # restore $ra
@@ -863,6 +863,25 @@
 1:
     DELIVER_PENDING_EXCEPTION
 
+    .global art_interpreter_entry
+    .extern artInterpreterEntry
+    ALIGN_FUNCTION_ENTRY
+art_interpreter_entry:
+    GENERATE_GLOBAL_POINTER
+    SETUP_REF_AND_ARGS_CALLEE_SAVE_FRAME
+    sw      $a0, 0($sp)            # place proxy method at bottom of frame
+    move    $a1, rSELF             # pass Thread::Current
+    jal     artInterpreterEntry    # (Method* method, Thread*, SP)
+    move    $a2, $sp               # pass $sp
+    lw      $t0, THREAD_EXCEPTION_OFFSET(rSELF) # load Thread::Current()->exception_
+    lw      $ra, 44($sp)           # restore $ra
+    bnez    $t0, 1f
+    addiu   $sp, $sp, 48           # pop frame
+    jr      $ra
+    nop
+1:
+    DELIVER_PENDING_EXCEPTION
+
     .global art_instrumentation_entry_from_code
     .global art_instrumentation_exit_from_code
     .extern artInstrumentationMethodEntryFromCode