Initialize primitive type classes during linker initialization.

Change-Id: Ib31da85afcc59c5d0a14346fb7f97043487fd662
diff --git a/src/class_linker.h b/src/class_linker.h
index fec3cb1..89fd8f7 100644
--- a/src/class_linker.h
+++ b/src/class_linker.h
@@ -18,12 +18,19 @@
   ClassLinker() {}
   ~ClassLinker() {}
 
+  // Initializes the class linker.
+  void Init();
+
   // Finds a class by its descriptor name.
   Class* FindClass(const char* descriptor,
                    Object* class_loader,
                    DexFile* dex_file);
 
-  Class* FindPrimitiveClass(const char* descriptor);
+  Class* FindSystemClass(const char* descriptor) {
+    return FindClass(descriptor, NULL, NULL);
+  }
+
+  Class* FindPrimitiveClass(JType type);
 
   bool InitializeClass(Class* klass);
 
@@ -38,6 +45,8 @@
   void AppendToClassPath(DexFile* dex_file);
 
  private:
+  Class* CreatePrimitiveClass(JType type, const char* descriptor);
+
   // Inserts a class into the class table.  Returns true if the class
   // was inserted.
   bool InsertClass(Class* klass);
@@ -85,6 +94,18 @@
 
   // TODO: classpath
 
+  Class* primitive_boolean_;
+  Class* primitive_char_;
+  Class* primitive_float_;
+  Class* primitive_double_;
+  Class* primitive_byte_;
+  Class* primitive_short_;
+  Class* primitive_int_;
+  Class* primitive_long_;
+  Class* primitive_void_;
+
+  Class* java_lang_Class_;
+
   DISALLOW_COPY_AND_ASSIGN(ClassLinker);
 };