Avoid copying and strlen(3) in the FindClass path.
Change-Id: I789f3c883596d1852a2c1954ce7a207e6f937117
diff --git a/src/class_linker.h b/src/class_linker.h
index bb9f7f5..6feacc0 100644
--- a/src/class_linker.h
+++ b/src/class_linker.h
@@ -55,28 +55,28 @@
// Finds a class by its descriptor, loading it if necessary.
// If class_loader is null, searches boot_class_path_.
- Class* FindClass(const std::string& descriptor, const ClassLoader* class_loader);
+ Class* FindClass(const char* descriptor, const ClassLoader* class_loader);
- Class* FindSystemClass(const std::string& descriptor) {
+ Class* FindSystemClass(const char* descriptor) {
return FindClass(descriptor, NULL);
}
// Define a new a class based on a ClassDef from a DexFile
- Class* DefineClass(const std::string& descriptor, const ClassLoader* class_loader,
+ Class* DefineClass(const StringPiece& descriptor, const ClassLoader* class_loader,
const DexFile& dex_file, const DexFile::ClassDef& dex_class_def);
// Finds a class by its descriptor, returning NULL if it isn't wasn't loaded
// by the given 'class_loader'.
- Class* LookupClass(const std::string& descriptor, const ClassLoader* class_loader);
+ Class* LookupClass(const char* descriptor, const ClassLoader* class_loader);
// Finds all the classes with the given descriptor, regardless of ClassLoader.
- void LookupClasses(const std::string& descriptor, std::vector<Class*>& classes);
+ void LookupClasses(const char* descriptor, std::vector<Class*>& classes);
Class* FindPrimitiveClass(char type);
// General class unloading is not supported, this is used to prune
// unwanted classes during image writing.
- bool RemoveClass(const std::string& descriptor, const ClassLoader* class_loader);
+ bool RemoveClass(const char* descriptor, const ClassLoader* class_loader);
void DumpAllClasses(int flags) const;
@@ -309,8 +309,7 @@
Primitive::Type type);
- Class* CreateArrayClass(const std::string& descriptor,
- const ClassLoader* class_loader);
+ Class* CreateArrayClass(const std::string& descriptor, const ClassLoader* class_loader);
void AppendToBootClassPath(const DexFile& dex_file);
void AppendToBootClassPath(const DexFile& dex_file, SirtRef<DexCache>& dex_cache);
@@ -334,7 +333,7 @@
// Inserts a class into the class table. Returns true if the class
// was inserted.
- bool InsertClass(const std::string& descriptor, Class* klass, bool image_class);
+ bool InsertClass(const StringPiece& descriptor, Class* klass, bool image_class);
void RegisterDexFileLocked(const DexFile& dex_file, SirtRef<DexCache>& dex_cache);
bool IsDexFileRegisteredLocked(const DexFile& dex_file) const;