Simplify ClassLinker::LoadClass

Starting out by removing the ClassLinker::LoadClass to not take a
DexFile. Then started pulling threads so that ClassLinker::LoadClass
could take a StringPiece instead of const char*. Finally went through
and removed all uses of StringPiece::data() to make sure things are
clean.

Change-Id: I47cfa0e8e0e35a31e0ebbd0f7d6a105be83ebe88
diff --git a/src/class_linker.h b/src/class_linker.h
index e4c5ff9..7f85da5 100644
--- a/src/class_linker.h
+++ b/src/class_linker.h
@@ -26,15 +26,14 @@
   Method* AllocMethod();
 
   // Finds a class by its descriptor name.
-  Class* FindClass(const char* descriptor,
-                   Object* class_loader,
-                   DexFile* dex_file);
+  Class* FindClass(const StringPiece& descriptor,
+                   Object* class_loader);
 
-  Class* FindSystemClass(const char* descriptor) {
-    return FindClass(descriptor, NULL, NULL);
+  Class* FindSystemClass(const StringPiece& descriptor) {
+    return FindClass(descriptor, NULL);
   }
 
-  bool LoadClass(const char* descriptor, Class* klass);
+  bool LoadClass(const StringPiece& descriptor, Class* klass);
 
   bool LoadClass(const RawDexFile::ClassDef& class_def, Class* klass);
 
@@ -42,7 +41,7 @@
 
   bool InitializeClass(Class* klass);
 
-  Class* LookupClass(const char* descriptor, Object* class_loader);
+  Class* LookupClass(const StringPiece& descriptor, Object* class_loader);
 
   Class* ResolveClass(const Class* referring, uint32_t class_idx);
 
@@ -50,7 +49,7 @@
 
   typedef std::pair<DexFile*, const RawDexFile::ClassDef*> ClassPathEntry;
 
-  ClassPathEntry FindInClassPath(const char* descriptor);
+  ClassPathEntry FindInClassPath(const StringPiece& descriptor);
 
   void AppendToClassPath(DexFile* dex_file);
 
@@ -106,7 +105,7 @@
   std::vector<DexFile*> class_path_;
 
   // TODO: multimap
-  typedef std::map<const char*, Class*, CStringLt> Table;
+  typedef std::map<const StringPiece, Class*> Table;
 
   Table classes_;