Some interpreter cleanup.

- Pass result pointer to interpreter to interpreter entry point.
- Avoid using MethodHelper.ChangeMethod in DoInvoke.

Change-Id: I714b78d50fb14d7a0edced54cd4de78ae54021da
diff --git a/src/oat/runtime/support_interpreter.cc b/src/oat/runtime/support_interpreter.cc
index d10a468..a5d6fa3 100644
--- a/src/oat/runtime/support_interpreter.cc
+++ b/src/oat/runtime/support_interpreter.cc
@@ -110,7 +110,7 @@
   return result.GetJ();
 }
 
-JValue artInterpreterToQuickEntry(Thread* self, ShadowFrame* shadow_frame)
+void artInterpreterToQuickEntry(Thread* self, ShadowFrame* shadow_frame, JValue* result)
     SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) {
   mirror::AbstractMethod* method = shadow_frame->GetMethod();
   MethodHelper mh(method);
@@ -119,10 +119,7 @@
   uint16_t arg_offset = (code_item == NULL) ? 0 : code_item->registers_size_ - code_item->ins_size_;
   ArgArray arg_array(mh.GetShorty(), mh.GetShortyLength());
   arg_array.BuildArgArray(shadow_frame, arg_offset);
-  JValue result;
-  method->Invoke(self, arg_array.GetArray(), arg_array.GetNumBytes(), &result, mh.GetShorty()[0]);
-
-  return result;
+  method->Invoke(self, arg_array.GetArray(), arg_array.GetNumBytes(), result, mh.GetShorty()[0]);
 }
 
 }  // namespace art