Move static field storage to end of Class instance

Change-Id: I90061999c9eef9d900e4269508b983a61f48b264
diff --git a/src/class_linker.h b/src/class_linker.h
index 13754db..5b629d5 100644
--- a/src/class_linker.h
+++ b/src/class_linker.h
@@ -75,7 +75,7 @@
 
   // Initialize class linker from pre-initialized space.
   void Init(const std::vector<DexFile*>& boot_class_path_, Space* space);
-  static void InitCallback(Object *obj, void *arg);
+  static void InitCallback(Object* obj, void *arg);
   struct InitCallbackState;
 
   void FinishInit();
@@ -83,12 +83,12 @@
   bool InitializeClass(Class* klass);
 
   // For early bootstrapping by Init
-  Class* AllocClass(Class* java_lang_Class);
+  Class* AllocClass(Class* java_lang_Class, size_t class_size);
 
   // Alloc* convenience functions to avoid needing to pass in Class*
   // values that are known to the ClassLinker such as
   // kObjectArrayClass and kJavaLangString etc.
-  Class* AllocClass();
+  Class* AllocClass(size_t class_size);
   DexCache* AllocDexCache(const DexFile* dex_file);
   Field* AllocField();
   Method* AllocMethod();
@@ -108,6 +108,9 @@
   void AppendToBootClassPath(const DexFile* dex_file);
   void AppendToBootClassPath(const DexFile* dex_file, DexCache* dex_cache);
 
+  size_t SizeOfClass(const DexFile& dex_file,
+                     const DexFile::ClassDef& dex_class_def);
+
   void LoadClass(const DexFile& dex_file,
                  const DexFile::ClassDef& dex_class_def,
                  Class* klass,
@@ -170,10 +173,18 @@
   void LinkAbstractMethods(Class* klass);
 
   bool LinkStaticFields(Class* klass);
-
   bool LinkInstanceFields(Class* klass);
+  bool LinkFields(size_t field_offset,
+                  size_t& num_reference_fields,
+                  size_t num_fields,
+                  ObjectArray<Field>* fields,
+                  size_t& size);
 
-  void CreateReferenceOffsets(Class* klass);
+  void CreateReferenceInstanceOffsets(Class* klass);
+  void CreateReferenceStaticOffsets(Class* klass);
+  void CreateReferenceOffsets(uint32_t& reference_offsets,
+                              size_t num_reference_fields,
+                              const ObjectArray<Field>* fields);
 
   std::vector<const DexFile*> boot_class_path_;