Separate oat from image

Change-Id: If2abdb99826ead14e3465d90ba2acffd89709389
diff --git a/src/runtime.h b/src/runtime.h
index ca0496c..bae5643 100644
--- a/src/runtime.h
+++ b/src/runtime.h
@@ -30,6 +30,7 @@
 class InternTable;
 class JavaVMExt;
 class Method;
+class OatFile;
 class SignalCatcher;
 class String;
 class ThreadList;
@@ -49,7 +50,9 @@
     std::string class_path_string_;
     std::vector<const DexFile*> class_path_;
     const char* boot_image_;
+    const char* boot_oat_;
     std::vector<const char*> images_;
+    std::vector<const char*> oats_;
     bool check_jni_;
     std::string jni_trace_;
     size_t heap_initial_size_;
@@ -145,35 +148,19 @@
 
   void VisitRoots(Heap::RootVisitor* visitor, void* arg) const;
 
-  bool HasJniStubArray() const {
-    return jni_stub_array_ != NULL;
-  }
+  bool HasJniStubArray() const;
+  ByteArray* GetJniStubArray() const;
+  void SetJniStubArray(ByteArray* jni_stub_array);
 
-  ByteArray* GetJniStubArray() const {
-    CHECK(jni_stub_array_ != NULL);
-    return jni_stub_array_;
-  }
-
-  void SetJniStubArray(ByteArray* jni_stub_array) {
-    CHECK(jni_stub_array != NULL);
-    CHECK(jni_stub_array_ == NULL || jni_stub_array_ == jni_stub_array);
-    jni_stub_array_ = jni_stub_array;
-  }
-
-  Method* CreateCalleeSaveMethod(InstructionSet insns);
-
-  bool HasCalleeSaveMethod() const {
-    return callee_save_method_ != NULL;
-  }
+  bool HasAbstractMethodErrorStubArray() const;
+  ByteArray* GetAbstractMethodErrorStubArray() const;
+  void SetAbstractMethodErrorStubArray(ByteArray* abstract_method_error_stub_array);
 
   // Returns a special method that describes all callee saves being spilled to the stack.
-  Method* GetCalleeSaveMethod() const {
-    return callee_save_method_;
-  }
-
-  void SetCalleeSaveMethod(Method* method) {
-    callee_save_method_ = method;
-  }
+  Method* CreateCalleeSaveMethod(InstructionSet insns);
+  bool HasCalleeSaveMethod() const;
+  Method* GetCalleeSaveMethod() const;
+  void SetCalleeSaveMethod(Method* method);
 
   int32_t GetStat(int kind);
 
@@ -195,6 +182,7 @@
   void BlockSignals();
 
   bool Init(const Options& options, bool ignore_unrecognized);
+  bool OpenOat(const Space* space, const char* boot_oat_);
   void InitNativeMethods();
   void RegisterRuntimeNativeMethods(JNIEnv*);
   void StartDaemonThreads();
@@ -214,12 +202,16 @@
 
   ClassLinker* class_linker_;
 
+  std::vector<const OatFile*> oat_files_;
+
   SignalCatcher* signal_catcher_;
 
   JavaVMExt* java_vm_;
 
   ByteArray* jni_stub_array_;
 
+  ByteArray* abstract_method_error_stub_array_;
+
   Method* callee_save_method_;
 
   bool started_;