diff options
Diffstat (limited to 'compiler/driver/compiler_driver-inl.h')
| -rw-r--r-- | compiler/driver/compiler_driver-inl.h | 13 | 
1 files changed, 9 insertions, 4 deletions
diff --git a/compiler/driver/compiler_driver-inl.h b/compiler/driver/compiler_driver-inl.h index 582330611d..f296851ebf 100644 --- a/compiler/driver/compiler_driver-inl.h +++ b/compiler/driver/compiler_driver-inl.h @@ -31,12 +31,17 @@  namespace art { +inline mirror::ClassLoader* CompilerDriver::GetClassLoader(const ScopedObjectAccess& soa, +                                                           const DexCompilationUnit* mUnit) { +  return soa.Decode<mirror::ClassLoader>(mUnit->GetClassLoader()).Ptr(); +} +  inline mirror::Class* CompilerDriver::ResolveClass(      const ScopedObjectAccess& soa, Handle<mirror::DexCache> dex_cache,      Handle<mirror::ClassLoader> class_loader, dex::TypeIndex cls_index,      const DexCompilationUnit* mUnit) {    DCHECK_EQ(dex_cache->GetDexFile(), mUnit->GetDexFile()); -  DCHECK_EQ(class_loader.Get(), mUnit->GetClassLoader().Get()); +  DCHECK_EQ(class_loader.Get(), GetClassLoader(soa, mUnit));    mirror::Class* cls = mUnit->GetClassLinker()->ResolveType(        *mUnit->GetDexFile(), cls_index, dex_cache, class_loader);    DCHECK_EQ(cls == nullptr, soa.Self()->IsExceptionPending()); @@ -51,7 +56,7 @@ inline mirror::Class* CompilerDriver::ResolveCompilingMethodsClass(      const ScopedObjectAccess& soa, Handle<mirror::DexCache> dex_cache,      Handle<mirror::ClassLoader> class_loader, const DexCompilationUnit* mUnit) {    DCHECK_EQ(dex_cache->GetDexFile(), mUnit->GetDexFile()); -  DCHECK_EQ(class_loader.Get(), mUnit->GetClassLoader().Get()); +  DCHECK_EQ(class_loader.Get(), GetClassLoader(soa, mUnit));    const DexFile::MethodId& referrer_method_id =        mUnit->GetDexFile()->GetMethodId(mUnit->GetDexMethodIndex());    return ResolveClass(soa, dex_cache, class_loader, referrer_method_id.class_idx_, mUnit); @@ -82,7 +87,7 @@ inline ArtField* CompilerDriver::ResolveField(      const ScopedObjectAccess& soa, Handle<mirror::DexCache> dex_cache,      Handle<mirror::ClassLoader> class_loader, const DexCompilationUnit* mUnit,      uint32_t field_idx, bool is_static) { -  DCHECK_EQ(class_loader.Get(), mUnit->GetClassLoader().Get()); +  DCHECK_EQ(class_loader.Get(), GetClassLoader(soa, mUnit));    return ResolveFieldWithDexFile(soa, dex_cache, class_loader, mUnit->GetDexFile(), field_idx,                                   is_static);  } @@ -134,7 +139,7 @@ inline ArtMethod* CompilerDriver::ResolveMethod(      ScopedObjectAccess& soa, Handle<mirror::DexCache> dex_cache,      Handle<mirror::ClassLoader> class_loader, const DexCompilationUnit* mUnit,      uint32_t method_idx, InvokeType invoke_type, bool check_incompatible_class_change) { -  DCHECK_EQ(class_loader.Get(), mUnit->GetClassLoader().Get()); +  DCHECK_EQ(class_loader.Get(), GetClassLoader(soa, mUnit));    ArtMethod* resolved_method =        check_incompatible_class_change            ? mUnit->GetClassLinker()->ResolveMethod<ClassLinker::kForceICCECheck>(  |