Move from code field routines to runtime support.

Add support for exceptions from these routines. Use a macro for pending
exception delivery. Fix bug in object_test where the signature of a
FromCode function had changed.

Change-Id: If486eff8659e5f6bb38d95b1139e8981656e4fb0
diff --git a/src/object_test.cc b/src/object_test.cc
index 6979b75..6b1f818 100644
--- a/src/object_test.cc
+++ b/src/object_test.cc
@@ -10,6 +10,7 @@
 #include "common_test.h"
 #include "dex_file.h"
 #include "heap.h"
+#include "runtime_support.h"
 
 namespace art {
 
@@ -162,14 +163,12 @@
   TestPrimitiveArray<ShortArray>(class_linker_);
 }
 
-extern "C" Array* artCheckAndAllocArrayFromCode(uint32_t type_idx, Method* method,
-                                                int32_t component_count);
 TEST_F(ObjectTest, CheckAndAllocArrayFromCode) {
   // pretend we are trying to call 'new char[3]' from String.toCharArray
   Class* java_util_Arrays = class_linker_->FindSystemClass("Ljava/util/Arrays;");
   Method* sort = java_util_Arrays->FindDirectMethod("sort", "([I)V");
   uint32_t type_idx = FindTypeIdxByDescriptor(*java_lang_dex_file_.get(), "[I");
-  Object* array = artCheckAndAllocArrayFromCode(type_idx, sort, 3);
+  Object* array = CheckAndAllocArrayFromCode(type_idx, sort, 3, Thread::Current());
   EXPECT_TRUE(array->IsArrayInstance());
   EXPECT_EQ(3, array->AsArray()->GetLength());
   EXPECT_TRUE(array->GetClass()->IsArrayClass());
@@ -185,15 +184,16 @@
   Class* klass = class_linker_->FindClass("LStaticsFromCode;", class_loader);
   Method* clinit = klass->FindDirectMethod("<clinit>", "()V");
   uint32_t field_idx = FindFieldIdxByDescriptorAndName(*dex_file, "LStaticsFromCode;", "s0");
-  Object* s0 = Field::GetObjStaticFromCode(field_idx, clinit);
+  Field* field = FindFieldFromCode(field_idx, clinit, true);
+  Object* s0 = field->GetObj(NULL);
   EXPECT_EQ(NULL, s0);
 
   CharArray* char_array = CharArray::Alloc(0);
-  Field::SetObjStaticFromCode(field_idx, clinit, char_array);
-  EXPECT_EQ(char_array, Field::GetObjStaticFromCode(field_idx, clinit));
+  field->SetObj(NULL, char_array);
+  EXPECT_EQ(char_array, field->GetObj(NULL));
 
-  Field::SetObjStaticFromCode(field_idx, clinit, NULL);
-  EXPECT_EQ(NULL, Field::GetObjStaticFromCode(field_idx, clinit));
+  field->SetObj(NULL, NULL);
+  EXPECT_EQ(NULL, field->GetObj(NULL));
 
   // TODO: more exhaustive tests of all 6 cases of Field::*FromCode
 }