Ensure that classes we're using for reflection are initialized.

Dalvik did the equivalent of EnsureInitialized both when handing out
fields and when receiving them back. We'd prefer to just check for
initialization once, up front, so let's do that and just assert in
debug builds that there isn't some bizarre way to get here.

Change-Id: I225ec30df5a78a60259121a50f6a7c4154956bce
diff --git a/src/java_lang_reflect_Field.cc b/src/java_lang_reflect_Field.cc
index b22212f..4eea533 100644
--- a/src/java_lang_reflect_Field.cc
+++ b/src/java_lang_reflect_Field.cc
@@ -26,6 +26,7 @@
 
 static bool GetFieldValue(Object* o, Field* f, JValue& value, bool allow_references) {
   ScopedThreadStateChange tsc(Thread::Current(), Thread::kRunnable);
+  DCHECK(f->GetDeclaringClass()->IsInitialized());
   switch (FieldHelper(f).GetTypeAsPrimitiveType()) {
   case Primitive::kPrimBoolean:
     value.z = f->GetBoolean(o);
@@ -154,6 +155,7 @@
 }
 
 static void SetFieldValue(Object* o, Field* f, const JValue& new_value, bool allow_references) {
+  DCHECK(f->GetDeclaringClass()->IsInitialized());
   switch (FieldHelper(f).GetTypeAsPrimitiveType()) {
   case Primitive::kPrimBoolean:
     f->SetBoolean(o, new_value.z);