From a5b09a67034e57a6e10231dd4bd92f4cb50b824c Mon Sep 17 00:00:00 2001 From: Andreas Gampe Date: Thu, 17 Nov 2016 15:21:22 -0800 Subject: ART: Add dex::TypeIndex Add abstraction for uint16_t type index. Test: m test-art-host Change-Id: I47708741c7c579cbbe59ab723c1e31c5fe71f83a --- compiler/driver/compiler_driver-inl.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'compiler/driver/compiler_driver-inl.h') diff --git a/compiler/driver/compiler_driver-inl.h b/compiler/driver/compiler_driver-inl.h index 971151665a..f056dd3c00 100644 --- a/compiler/driver/compiler_driver-inl.h +++ b/compiler/driver/compiler_driver-inl.h @@ -38,7 +38,7 @@ inline mirror::ClassLoader* CompilerDriver::GetClassLoader(const ScopedObjectAcc inline mirror::Class* CompilerDriver::ResolveClass( const ScopedObjectAccess& soa, Handle dex_cache, - Handle class_loader, uint16_t cls_index, + Handle class_loader, dex::TypeIndex cls_index, const DexCompilationUnit* mUnit) { DCHECK_EQ(dex_cache->GetDexFile(), mUnit->GetDexFile()); DCHECK_EQ(class_loader.Get(), GetClassLoader(soa, mUnit)); @@ -141,7 +141,7 @@ inline std::pair CompilerDriver::IsClassOfStaticMemberAvailableToRef mirror::Class* referrer_class, ArtMember* resolved_member, uint16_t member_idx, - uint32_t* storage_index) { + dex::TypeIndex* storage_index) { DCHECK(resolved_member->IsStatic()); if (LIKELY(referrer_class != nullptr)) { ObjPtr members_class = resolved_member->GetDeclaringClass(); @@ -156,7 +156,7 @@ inline std::pair CompilerDriver::IsClassOfStaticMemberAvailableToRef // TODO: for images we can elide the static storage base null check // if we know there's a non-null entry in the image const DexFile* dex_file = dex_cache->GetDexFile(); - uint32_t storage_idx = DexFile::kDexNoIndex; + dex::TypeIndex storage_idx(DexFile::kDexNoIndex16); if (LIKELY(members_class->GetDexCache() == dex_cache)) { // common case where the dex cache of both the referrer and the member are the same, // no need to search the dex file @@ -166,27 +166,27 @@ inline std::pair CompilerDriver::IsClassOfStaticMemberAvailableToRef // of the class mentioned in the dex file and there is no dex cache entry. storage_idx = resolved_member->GetDeclaringClass()->FindTypeIndexInOtherDexFile(*dex_file); } - if (storage_idx != DexFile::kDexNoIndex) { + if (storage_idx.IsValid()) { *storage_index = storage_idx; return std::make_pair(true, !resolved_member->IsFinal()); } } } // Conservative defaults. - *storage_index = DexFile::kDexNoIndex; + *storage_index = dex::TypeIndex(DexFile::kDexNoIndex16); return std::make_pair(false, false); } inline std::pair CompilerDriver::IsFastStaticField( mirror::DexCache* dex_cache, mirror::Class* referrer_class, - ArtField* resolved_field, uint16_t field_idx, uint32_t* storage_index) { + ArtField* resolved_field, uint16_t field_idx, dex::TypeIndex* storage_index) { return IsClassOfStaticMemberAvailableToReferrer( dex_cache, referrer_class, resolved_field, field_idx, storage_index); } inline bool CompilerDriver::IsClassOfStaticMethodAvailableToReferrer( mirror::DexCache* dex_cache, mirror::Class* referrer_class, - ArtMethod* resolved_method, uint16_t method_idx, uint32_t* storage_index) { + ArtMethod* resolved_method, uint16_t method_idx, dex::TypeIndex* storage_index) { std::pair result = IsClassOfStaticMemberAvailableToReferrer( dex_cache, referrer_class, resolved_method, method_idx, storage_index); // Only the first member of `result` is meaningful, as there is no -- cgit v1.2.3-59-g8ed1b