summaryrefslogtreecommitdiff
path: root/runtime/native/java_lang_VMClassLoader.cc
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2022-12-01 16:17:47 +0000
committer VladimĂ­r Marko <vmarko@google.com> 2022-12-02 15:00:55 +0000
commit7b97aebac851b345c7733d56ffe0fedf66010dbb (patch)
treeb1be8f0d36642d4d27e3e73dd63f24ba67ed7352 /runtime/native/java_lang_VMClassLoader.cc
parent4c25ffc893541a4c3d5f6c077914633ca637406a (diff)
Remove class root duplicates from well known classes.
And get well known exception classes as declaring classes of their constructors. Also change function `ThreadForEnv()` to `Thread::ForEnv()` and use it where appropriate, mostly in code added recently while cleaning up well-known methods. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Change-Id: I2ededa429863a6cddbcbb879a223277fd6245557
Diffstat (limited to 'runtime/native/java_lang_VMClassLoader.cc')
-rw-r--r--runtime/native/java_lang_VMClassLoader.cc14
1 files changed, 6 insertions, 8 deletions
diff --git a/runtime/native/java_lang_VMClassLoader.cc b/runtime/native/java_lang_VMClassLoader.cc
index b327e51849..b9c72b82e7 100644
--- a/runtime/native/java_lang_VMClassLoader.cc
+++ b/runtime/native/java_lang_VMClassLoader.cc
@@ -35,7 +35,8 @@
#include "obj_ptr.h"
#include "scoped_fast_native_object_access-inl.h"
#include "string_array_utils.h"
-#include "well_known_classes.h"
+#include "thread-inl.h"
+#include "well_known_classes-inl.h"
namespace art {
@@ -96,12 +97,9 @@ static jclass VMClassLoader_findLoadedClass(JNIEnv* env, jclass, jobject javaLoa
if (c != nullptr && c->IsErroneous()) {
cl->ThrowEarlierClassFailure(c);
Thread* self = soa.Self();
- ObjPtr<mirror::Class> iae_class =
- self->DecodeJObject(WellKnownClasses::java_lang_IllegalAccessError)->AsClass();
- ObjPtr<mirror::Class> ncdfe_class =
- self->DecodeJObject(WellKnownClasses::java_lang_NoClassDefFoundError)->AsClass();
- ObjPtr<mirror::Class> exception = self->GetException()->GetClass();
- if (exception == iae_class || exception == ncdfe_class) {
+ ObjPtr<mirror::Class> exception_class = self->GetException()->GetClass();
+ if (exception_class == WellKnownClasses::java_lang_IllegalAccessError ||
+ exception_class == WellKnownClasses::java_lang_NoClassDefFoundError) {
self->ThrowNewWrappedException("Ljava/lang/ClassNotFoundException;",
c->PrettyDescriptor().c_str());
}
@@ -159,7 +157,7 @@ static jobjectArray VMClassLoader_getBootClassPathEntries(JNIEnv* env, jclass) {
return is_base_dex(dex_file);
};
auto get_location = [](const DexFile* dex_file) { return dex_file->GetLocation(); };
- ScopedObjectAccess soa(down_cast<JNIEnvExt*>(env)->GetSelf());
+ ScopedObjectAccess soa(Thread::ForEnv(env));
return soa.AddLocalReference<jobjectArray>(CreateStringArray(
soa.Self(),
jar_count,