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_;