Various fixes to the interpreter. First 23 run-test tests pass.

- Factored out code to throw stack overflow error into its own method.
- Increased kStackOverflowReservedBytes to 10kB to support interpreter.
- Reordered return type checks to prevent type resolution with an
  exception pending.
- Fixed field checks so they pass if the field is static or the object
  is the declaring class.
- Suppressed using the interpreter for proxy methods.

Change-Id: Ide73ec928ab0aa7b31229c4e69679a35dd948e43
diff --git a/src/compiler_llvm/runtime_support_llvm.cc b/src/compiler_llvm/runtime_support_llvm.cc
index 28f9335..371b32a 100644
--- a/src/compiler_llvm/runtime_support_llvm.cc
+++ b/src/compiler_llvm/runtime_support_llvm.cc
@@ -150,13 +150,7 @@
 void art_throw_stack_overflow_from_code()
     SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) {
   Thread* thread = art_get_current_thread_from_code();
-  if (Runtime::Current()->IsMethodTracingActive()) {
-    InstrumentationMethodUnwindFromCode(thread);
-  }
-  thread->SetStackEndForStackOverflow();  // Allow space on the stack for constructor to execute.
-  thread->ThrowNewExceptionF("Ljava/lang/StackOverflowError;", "stack size %s",
-                             PrettySize(thread->GetStackSize()).c_str());
-  thread->ResetDefaultStackEnd();  // Return to default stack size.
+  ThrowStackOverflowError(thread);
 }
 
 void art_throw_exception_from_code(Object* exception)