diff options
Diffstat (limited to 'src/compiler.cc')
-rw-r--r-- | src/compiler.cc | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/compiler.cc b/src/compiler.cc index edadc12b0d..10b4939bb0 100644 --- a/src/compiler.cc +++ b/src/compiler.cc @@ -1271,8 +1271,9 @@ static void InitializeClassWithoutClinit(const CompilationContext* context, ClassLoader* class_loader = soa.Decode<ClassLoader*>(context->GetClassLoader()); const char* descriptor = context->GetDexFile()->GetClassDescriptor(class_def); Class* klass = context->GetClassLinker()->FindClass(descriptor, class_loader); + Thread* self = Thread::Current(); if (klass != NULL) { - ObjectLock lock(klass); + ObjectLock lock(self, klass); if (klass->IsVerified()) { // Only try to initialize classes that were successfully verified. bool compiling_boot = Runtime::Current()->GetHeap()->GetSpaces().size() == 1; @@ -1295,8 +1296,8 @@ static void InitializeClassWithoutClinit(const CompilationContext* context, DCHECK_EQ(status, compiled_class->GetStatus()); } } - // clear any class not found or verification exceptions - Thread::Current()->ClearException(); + // Clear any class not found or verification exceptions. + self->ClearException(); } void Compiler::InitializeClassesWithoutClinit(jobject jni_class_loader, const DexFile& dex_file, |