diff options
author | 2016-11-02 09:49:25 +0000 | |
---|---|---|
committer | 2016-11-02 09:49:25 +0000 | |
commit | af3572bc21cf66f970090c852b976095bb028083 (patch) | |
tree | 597b436db28186864524d5208628082e52a5ff52 /runtime/class_linker.cc | |
parent | fd1ae75a03b0b17fdbbb0097e856f494edf12312 (diff) |
Revert "ART: Generalize FindClassInPathClassLoader"
Bug: 32510706
This reverts commit fd1ae75a03b0b17fdbbb0097e856f494edf12312.
Change-Id: Ie247477eea44a6a241d90864bf5dca29897ff4b8
Diffstat (limited to 'runtime/class_linker.cc')
-rw-r--r-- | runtime/class_linker.cc | 34 |
1 files changed, 12 insertions, 22 deletions
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc index d3d30d4cea..73524af0be 100644 --- a/runtime/class_linker.cc +++ b/runtime/class_linker.cc @@ -2329,12 +2329,12 @@ ClassPathEntry FindInClassPath(const char* descriptor, return ClassPathEntry(nullptr, nullptr); } -bool ClassLinker::FindClassInBaseDexClassLoader(ScopedObjectAccessAlreadyRunnable& soa, - Thread* self, - const char* descriptor, - size_t hash, - Handle<mirror::ClassLoader> class_loader, - ObjPtr<mirror::Class>* result) { +bool ClassLinker::FindClassInPathClassLoader(ScopedObjectAccessAlreadyRunnable& soa, + Thread* self, + const char* descriptor, + size_t hash, + Handle<mirror::ClassLoader> class_loader, + ObjPtr<mirror::Class>* result) { // Termination case: boot class-loader. if (IsBootClassLoader(soa, class_loader.Get())) { // The boot class loader, search the boot class path. @@ -2364,24 +2364,14 @@ bool ClassLinker::FindClassInBaseDexClassLoader(ScopedObjectAccessAlreadyRunnabl // Unsupported class-loader? if (soa.Decode<mirror::Class>(WellKnownClasses::dalvik_system_PathClassLoader) != class_loader->GetClass()) { - // PathClassLoader is the most common case, so it's the one we check first. For secondary dex - // files, we also check DexClassLoader here. - if (soa.Decode<mirror::Class>(WellKnownClasses::dalvik_system_DexClassLoader) != - class_loader->GetClass()) { - *result = nullptr; - return false; - } + *result = nullptr; + return false; } // Handles as RegisterDexFile may allocate dex caches (and cause thread suspension). StackHandleScope<4> hs(self); Handle<mirror::ClassLoader> h_parent(hs.NewHandle(class_loader->GetParent())); - bool recursive_result = FindClassInBaseDexClassLoader(soa, - self, - descriptor, - hash, - h_parent, - result); + bool recursive_result = FindClassInPathClassLoader(soa, self, descriptor, hash, h_parent, result); if (!recursive_result) { // Something wrong up the chain. @@ -2503,14 +2493,14 @@ mirror::Class* ClassLinker::FindClass(Thread* self, } else { ScopedObjectAccessUnchecked soa(self); ObjPtr<mirror::Class> cp_klass; - if (FindClassInBaseDexClassLoader(soa, self, descriptor, hash, class_loader, &cp_klass)) { + if (FindClassInPathClassLoader(soa, self, descriptor, hash, class_loader, &cp_klass)) { // The chain was understood. So the value in cp_klass is either the class we were looking // for, or not found. if (cp_klass != nullptr) { return cp_klass.Ptr(); } - // TODO: We handle the boot classpath loader in FindClassInBaseDexClassLoader. Try to unify - // this and the branch above. TODO: throw the right exception here. + // TODO: We handle the boot classpath loader in FindClassInPathClassLoader. Try to unify this + // and the branch above. TODO: throw the right exception here. // We'll let the Java-side rediscover all this and throw the exception with the right stack // trace. |