Interpreter.

The opcodes filled-new-array and packed-switch aren't implemented but
are trivial given that they are variants of implemented opcodes.
Refactor Field::Get routines to take the declaring class in the case of
static field accesses. This avoids a check on every use of a field.
Refactor arg array builder to be shared by JNI invokes and invocations
into the interpreter.
Fix benign bug in const decoding in the verifier.

Change-Id: I8dee6c1f4b7f033e6c003422c56e9471cfaccda8
diff --git a/src/runtime.cc b/src/runtime.cc
index 7bc1b70..79d1fb2 100644
--- a/src/runtime.cc
+++ b/src/runtime.cc
@@ -191,7 +191,8 @@
     if (!tll_already_held || !ml_already_held) {
       os << "Dumping all threads without appropriate locks held:"
           << (!tll_already_held ? " thread list lock" : "")
-          << (!ml_already_held ? " mutator lock" : "");
+          << (!ml_already_held ? " mutator lock" : "")
+          << "\n";
     }
     os << "All threads:\n";
     Runtime::Current()->GetThreadList()->DumpLocked(os);
@@ -717,8 +718,12 @@
   CHECK_EQ(self->GetState(), kNative);
 
   JNIEnv* env = self->GetJniEnv();
-  env->CallStaticVoidMethod(WellKnownClasses::java_lang_Daemons, WellKnownClasses::java_lang_Daemons_start);
-  CHECK(!env->ExceptionCheck());
+  env->CallStaticVoidMethod(WellKnownClasses::java_lang_Daemons,
+                            WellKnownClasses::java_lang_Daemons_start);
+  if (env->ExceptionCheck()) {
+    env->ExceptionDescribe();
+    LOG(FATAL) << "Error starting java.lang.Daemons";
+  }
 
   VLOG(startup) << "Runtime::StartDaemonThreads exiting";
 }