Make class roots an image root

Change-Id: I1f1513bf34caa736c0dd7518a92f493b4573d776
diff --git a/src/object.h b/src/object.h
index 7634807..42235b8 100644
--- a/src/object.h
+++ b/src/object.h
@@ -248,16 +248,10 @@
   bool IsObjectArray() const;
 
   template<class T>
-  ObjectArray<T>* AsObjectArray() {
-    DCHECK(IsObjectArray());
-    return down_cast<ObjectArray<T>*>(this);
-  }
+  ObjectArray<T>* AsObjectArray();
 
   template<class T>
-  const ObjectArray<T>* AsObjectArray() const {
-    DCHECK(IsObjectArray());
-    return down_cast<const ObjectArray<T>*>(this);
-  }
+  const ObjectArray<T>* AsObjectArray() const;
 
   bool IsArrayInstance() const;
 
@@ -2106,6 +2100,18 @@
   return IsArrayInstance() && !GetClass()->GetComponentType()->IsPrimitive();
 }
 
+template<class T>
+inline ObjectArray<T>* Object::AsObjectArray() {
+  DCHECK(IsObjectArray());
+  return down_cast<ObjectArray<T>*>(this);
+}
+
+template<class T>
+inline const ObjectArray<T>* Object::AsObjectArray() const {
+  DCHECK(IsObjectArray());
+  return down_cast<const ObjectArray<T>*>(this);
+}
+
 inline bool Object::IsArrayInstance() const {
   return GetClass()->IsArrayClass();
 }