Reduce meta-data object sizes, introduce meta-data helper classes.

Change-Id: Id14ad218f1c74c659701352fdf1a45bf6444daa3
diff --git a/src/compiler.cc b/src/compiler.cc
index fba767d..e437062 100644
--- a/src/compiler.cc
+++ b/src/compiler.cc
@@ -11,6 +11,7 @@
 #include "jni_compiler.h"
 #include "jni_internal.h"
 #include "oat_file.h"
+#include "object_utils.h"
 #include "runtime.h"
 #include "stl_util.h"
 
@@ -145,6 +146,18 @@
   return image_classes_->find(descriptor) != image_classes_->end();
 }
 
+bool Compiler::CanAssumeTypeIsPresentInDexCache(const DexCache* dex_cache,
+                                                uint32_t type_idx) const {
+  if (!IsImage()) {
+    return false;
+  }
+  Class* resolved_class = dex_cache->GetResolvedTypes()->Get(type_idx);
+  if (resolved_class == NULL) {
+    return false;
+  }
+  return IsImageClass(ClassHelper(resolved_class).GetDescriptor());
+}
+
 // Return true if the class should be skipped during compilation. We
 // never skip classes in the boot class loader. However, if we have a
 // non-boot class loader and we can resolve the class in the boot