Add fast path to VMClassLoader.findLoadedClass
VMClassLoader.findLoadedClass now calls FindClassInPathClassLoader
as a fast path. Exclusive time results (trace view maps launch):
Before:
nativeFillInStackTrace 1.4%
defineClassNative 1.2%
findLoadedClass 0.2%
After:
nativeFillInStackTrace 0.5%
defineClassNative 0.0%
findLoadedClass 0.9%
(cherry picked from commit 194116c836080de14245a3a7c4617d07b8abf8cf)
Change-Id: I63fd7b4bccb71789e92bd39d1d3f9d0de22535de
diff --git a/runtime/class_linker.h b/runtime/class_linker.h
index 7afa6a1..11ac326 100644
--- a/runtime/class_linker.h
+++ b/runtime/class_linker.h
@@ -76,6 +76,12 @@
ConstHandle<mirror::ClassLoader> class_loader)
SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
+ // Find a class in the path class loader, loading it if necessary.
+ mirror::Class* FindClassInPathClassLoader(ScopedObjectAccessAlreadyRunnable& soa,
+ Thread* self, const char* descriptor,
+ ConstHandle<mirror::ClassLoader> class_loader)
+ SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
+
// Finds a class by its descriptor using the "system" class loader, ie by searching the
// boot_class_path_.
mirror::Class* FindSystemClass(Thread* self, const char* descriptor)