Refactor java.lang.reflect implementation

Cherry-picked from commit ed41d5c44299ec5d44b8514f6e17f802f48094d1.

Move to ArtMethod/Field instead of AbstractMethod/Field and have
java.lang.reflect APIs delegate to ArtMethod/ArtField.

Bug: 10014286.

Change-Id: Iafc1d8c5b62562c9af8fb9fd8c5e1d61270536e7
diff --git a/runtime/gc/collector/mark_sweep-inl.h b/runtime/gc/collector/mark_sweep-inl.h
index 6b1b617..e158952 100644
--- a/runtime/gc/collector/mark_sweep-inl.h
+++ b/runtime/gc/collector/mark_sweep-inl.h
@@ -20,8 +20,8 @@
 #include "gc/collector/mark_sweep.h"
 
 #include "gc/heap.h"
+#include "mirror/art_field.h"
 #include "mirror/class.h"
-#include "mirror/field.h"
 #include "mirror/object_array.h"
 
 namespace art {
@@ -136,8 +136,8 @@
                                      ? klass->NumReferenceStaticFields()
                                      : klass->NumReferenceInstanceFields());
       for (size_t i = 0; i < num_reference_fields; ++i) {
-        mirror::Field* field = (is_static ? klass->GetStaticField(i)
-                                          : klass->GetInstanceField(i));
+        mirror::ArtField* field = (is_static ? klass->GetStaticField(i)
+                                   : klass->GetInstanceField(i));
         MemberOffset field_offset = field->GetOffset();
         const mirror::Object* ref = obj->GetFieldObject<const mirror::Object*>(field_offset, false);
         visitor(obj, ref, field_offset, is_static);