summaryrefslogtreecommitdiff
path: root/runtime/class_linker_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/class_linker_test.cc')
-rw-r--r--runtime/class_linker_test.cc14
1 files changed, 8 insertions, 6 deletions
diff --git a/runtime/class_linker_test.cc b/runtime/class_linker_test.cc
index e7e5554d7a..64f6e64aca 100644
--- a/runtime/class_linker_test.cc
+++ b/runtime/class_linker_test.cc
@@ -131,12 +131,14 @@ class ClassLinkerTest : public CommonRuntimeTest {
EXPECT_TRUE(JavaLangObject->GetSuperClass() == nullptr);
EXPECT_FALSE(JavaLangObject->HasSuperClass());
EXPECT_TRUE(JavaLangObject->GetClassLoader() == nullptr);
- // TODO(b/253691761): Remove the last argument to MakeInitializedClassesVisiblyInitial when
- // possible. We should not be holding the mutator lock here, but temporarily releasing it
- // would compromise the ObjPtr argument.
- class_linker_->MakeInitializedClassesVisiblyInitialized(Thread::Current(),
- /*wait=*/ true,
- /*allowLockChecking=*/ false);
+ {
+ Thread* self = Thread::Current();
+ StackHandleScope<1> hs(self);
+ HandleWrapperObjPtr<mirror::Class> h(hs.NewHandleWrapper(&JavaLangObject));
+ ScopedThreadSuspension sts(self, ThreadState::kNative);
+ class_linker_->MakeInitializedClassesVisiblyInitialized(self, /*wait=*/ true);
+ // HandleWrapperObjPtr restores JavaLangObject here after becoming runnable again.
+ }
EXPECT_EQ(ClassStatus::kVisiblyInitialized, JavaLangObject->GetStatus());
EXPECT_FALSE(JavaLangObject->IsErroneous());
EXPECT_TRUE(JavaLangObject->IsLoaded());