Lines Matching refs:dex_file
360 const DexFile* dex_file = boot_class_path[i]; in InitWithoutImage() local
361 CHECK(dex_file != nullptr); in InitWithoutImage()
362 AppendToBootClassPath(*dex_file); in InitWithoutImage()
680 const OatFile::OatDexFile* ClassLinker::FindOpenedOatDexFileForDexFile(const DexFile& dex_file) { in FindOpenedOatDexFileForDexFile() argument
681 const char* dex_location = dex_file.GetLocation().c_str(); in FindOpenedOatDexFileForDexFile()
682 uint32_t dex_location_checksum = dex_file.GetLocationChecksum(); in FindOpenedOatDexFileForDexFile()
772 const DexFile* dex_file = oat_dex_file->OpenDexFile(&error_msg); in LoadMultiDexFilesFromOatFile() local
773 if (dex_file == nullptr) { in LoadMultiDexFilesFromOatFile()
777 dex_files->push_back(dex_file); in LoadMultiDexFilesFromOatFile()
1020 std::unique_ptr<const DexFile> dex_file(oat_dex_file->OpenDexFile(error_msg)); in FindOatFileInOatLocationForDexFile() local
1021 if (dex_file.get() != nullptr) { in FindOatFileInOatLocationForDexFile()
1153 std::unique_ptr<const DexFile> dex_file; in VerifyOatWithDexFile() local
1165 dex_file.reset(oat_dex_file->OpenDexFile(error_msg)); in VerifyOatWithDexFile()
1172 dex_file.reset(oat_file->GetOatDexFile(dex_location, in VerifyOatWithDexFile()
1175 return dex_file.get() != nullptr; in VerifyOatWithDexFile()
1627 const DexFile* dex_file = oat_dex_file->OpenDexFile(&error_msg); in InitFromImage() local
1628 if (dex_file == nullptr) { in InitFromImage()
1634 CHECK_EQ(dex_file->GetLocationChecksum(), oat_dex_file->GetDexFileLocationChecksum()); in InitFromImage()
1636 AppendToBootClassPath(*dex_file, dex_cache); in InitFromImage()
1855 mirror::DexCache* ClassLinker::AllocDexCache(Thread* self, const DexFile& dex_file) { in AllocDexCache() argument
1867 location(hs.NewHandle(intern_table_->InternStrong(dex_file.GetLocation().c_str()))); in AllocDexCache()
1872 strings(hs.NewHandle(AllocStringArray(self, dex_file.NumStringIds()))); in AllocDexCache()
1877 types(hs.NewHandle(AllocClassArray(self, dex_file.NumTypeIds()))); in AllocDexCache()
1882 methods(hs.NewHandle(AllocArtMethodArray(self, dex_file.NumMethodIds()))); in AllocDexCache()
1887 fields(hs.NewHandle(AllocArtFieldArray(self, dex_file.NumFieldIds()))); in AllocDexCache()
1891 dex_cache->Init(&dex_file, location.Get(), strings.Get(), types.Get(), methods.Get(), in AllocDexCache()
1991 const DexFile* dex_file = class_path[i]; in FindInClassPath() local
1992 const DexFile::ClassDef* dex_class_def = dex_file->FindClassDef(descriptor); in FindInClassPath()
1994 return ClassPathEntry(dex_file, dex_class_def); in FindInClassPath()
2055 mirror::Object* dex_file = dex_file_field->GetObject(element); in FindClassInPathClassLoader() local
2056 if (dex_file != nullptr) { in FindClassInPathClassLoader()
2057 const uint64_t cookie = cookie_field->GetLong(dex_file); in FindClassInPathClassLoader()
2065 for (const DexFile* dex_file : *dex_files) { in FindClassInPathClassLoader()
2066 const DexFile::ClassDef* dex_class_def = dex_file->FindClassDef(descriptor); in FindClassInPathClassLoader()
2068 RegisterDexFile(*dex_file); in FindClassInPathClassLoader()
2070 DefineClass(descriptor, class_loader, *dex_file, *dex_class_def); in FindClassInPathClassLoader()
2187 const DexFile& dex_file, in DefineClass() argument
2223 klass.Assign(AllocClass(self, SizeOfClassWithoutEmbeddedTables(dex_file, dex_class_def))); in DefineClass()
2229 klass->SetDexCache(FindDexCache(dex_file)); in DefineClass()
2230 LoadClass(dex_file, dex_class_def, klass, class_loader.Get()); in DefineClass()
2252 if (!LoadSuperAndInterfaces(klass, dex_file)) { in DefineClass()
2295 uint32_t ClassLinker::SizeOfClassWithoutEmbeddedTables(const DexFile& dex_file, in SizeOfClassWithoutEmbeddedTables() argument
2297 const byte* class_data = dex_file.GetClassData(dex_class_def); in SizeOfClassWithoutEmbeddedTables()
2302 for (ClassDataItemIterator it(dex_file, class_data); it.HasNextStaticField(); it.Next()) { in SizeOfClassWithoutEmbeddedTables()
2303 const DexFile::FieldId& field_id = dex_file.GetFieldId(it.GetMemberIndex()); in SizeOfClassWithoutEmbeddedTables()
2304 const char* descriptor = dex_file.GetFieldTypeDescriptor(field_id); in SizeOfClassWithoutEmbeddedTables()
2318 bool ClassLinker::FindOatClass(const DexFile& dex_file, in FindOatClass() argument
2323 const OatFile::OatDexFile* oat_dex_file = FindOpenedOatDexFileForDexFile(dex_file); in FindOatClass()
2331 static uint32_t GetOatMethodIndexFromMethodIndex(const DexFile& dex_file, uint16_t class_def_idx, in GetOatMethodIndexFromMethodIndex() argument
2333 const DexFile::ClassDef& class_def = dex_file.GetClassDef(class_def_idx); in GetOatMethodIndexFromMethodIndex()
2334 const byte* class_data = dex_file.GetClassData(class_def); in GetOatMethodIndexFromMethodIndex()
2336 ClassDataItemIterator it(dex_file, class_data); in GetOatMethodIndexFromMethodIndex()
2361 LOG(FATAL) << "Failed to find method index " << method_idx << " in " << dex_file.GetLocation(); in GetOatMethodIndexFromMethodIndex()
2466 const void* ClassLinker::GetQuickOatCodeFor(const DexFile& dex_file, uint16_t class_def_idx, in GetQuickOatCodeFor() argument
2469 if (!FindOatClass(dex_file, class_def_idx, &oat_class)) { in GetQuickOatCodeFor()
2472 uint32_t oat_method_idx = GetOatMethodIndexFromMethodIndex(dex_file, class_def_idx, method_idx); in GetQuickOatCodeFor()
2477 const void* ClassLinker::GetPortableOatCodeFor(const DexFile& dex_file, uint16_t class_def_idx, in GetPortableOatCodeFor() argument
2480 if (!FindOatClass(dex_file, class_def_idx, &oat_class)) { in GetPortableOatCodeFor()
2483 uint32_t oat_method_idx = GetOatMethodIndexFromMethodIndex(dex_file, class_def_idx, method_idx); in GetPortableOatCodeFor()
2523 const DexFile& dex_file = klass->GetDexFile(); in FixupStaticTrampolines() local
2526 const byte* class_data = dex_file.GetClassData(*dex_class_def); in FixupStaticTrampolines()
2529 ClassDataItemIterator it(dex_file, class_data); in FixupStaticTrampolines()
2538 bool has_oat_class = FindOatClass(dex_file, klass->GetDexClassDefIndex(), &oat_class); in FixupStaticTrampolines()
2592 const DexFile& dex_file, uint32_t dex_method_index, in LinkCode() argument
2691 void ClassLinker::LoadClass(const DexFile& dex_file, in LoadClass() argument
2698 const char* descriptor = dex_file.GetClassDescriptor(dex_class_def); in LoadClass()
2712 klass->SetDexClassDefIndex(dex_file.GetIndexForClassDef(dex_class_def)); in LoadClass()
2715 const byte* class_data = dex_file.GetClassData(dex_class_def); in LoadClass()
2723 && FindOatClass(dex_file, klass->GetDexClassDefIndex(), &oat_class)) { in LoadClass()
2724 LoadClassMembers(dex_file, class_data, klass, class_loader, &oat_class); in LoadClass()
2726 LoadClassMembers(dex_file, class_data, klass, class_loader, nullptr); in LoadClass()
2730 void ClassLinker::LoadClassMembers(const DexFile& dex_file, in LoadClassMembers() argument
2736 ClassDataItemIterator it(dex_file, class_data); in LoadClassMembers()
2763 LoadField(dex_file, it, klass, sfield); in LoadClassMembers()
2773 LoadField(dex_file, it, klass, ifield); in LoadClassMembers()
2802 Handle<mirror::ArtMethod> method(hs.NewHandle(LoadMethod(self, dex_file, it, klass))); in LoadClassMembers()
2808 LinkCode(method, oat_class, dex_file, it.GetMemberIndex(), class_def_method_index); in LoadClassMembers()
2822 Handle<mirror::ArtMethod> method(hs.NewHandle(LoadMethod(self, dex_file, it, klass))); in LoadClassMembers()
2829 LinkCode(method, oat_class, dex_file, it.GetMemberIndex(), class_def_method_index); in LoadClassMembers()
2843 mirror::ArtMethod* ClassLinker::LoadMethod(Thread* self, const DexFile& dex_file, in LoadMethod() argument
2847 const DexFile::MethodId& method_id = dex_file.GetMethodId(dex_method_idx); in LoadMethod()
2848 const char* method_name = dex_file.StringDataByIdx(method_id.name_idx_); in LoadMethod()
2870 if (strcmp("V", dex_file.GetShorty(method_id.proto_idx_)) == 0) { in LoadMethod()
2897 << PrettyDescriptor(klass.Get()) << " in dex file " << dex_file.GetLocation(); in LoadMethod()
2908 void ClassLinker::AppendToBootClassPath(const DexFile& dex_file) { in AppendToBootClassPath() argument
2911 Handle<mirror::DexCache> dex_cache(hs.NewHandle(AllocDexCache(self, dex_file))); in AppendToBootClassPath()
2913 << dex_file.GetLocation(); in AppendToBootClassPath()
2914 AppendToBootClassPath(dex_file, dex_cache); in AppendToBootClassPath()
2917 void ClassLinker::AppendToBootClassPath(const DexFile& dex_file, in AppendToBootClassPath() argument
2919 CHECK(dex_cache.Get() != nullptr) << dex_file.GetLocation(); in AppendToBootClassPath()
2920 boot_class_path_.push_back(&dex_file); in AppendToBootClassPath()
2921 RegisterDexFile(dex_file, dex_cache); in AppendToBootClassPath()
2924 bool ClassLinker::IsDexFileRegisteredLocked(const DexFile& dex_file) { in IsDexFileRegisteredLocked() argument
2928 if (dex_cache->GetDexFile() == &dex_file) { in IsDexFileRegisteredLocked()
2935 bool ClassLinker::IsDexFileRegistered(const DexFile& dex_file) { in IsDexFileRegistered() argument
2937 return IsDexFileRegisteredLocked(dex_file); in IsDexFileRegistered()
2940 void ClassLinker::RegisterDexFileLocked(const DexFile& dex_file, in RegisterDexFileLocked() argument
2943 CHECK(dex_cache.Get() != nullptr) << dex_file.GetLocation(); in RegisterDexFileLocked()
2944 CHECK(dex_cache->GetLocation()->Equals(dex_file.GetLocation())) in RegisterDexFileLocked()
2945 << dex_cache->GetLocation()->ToModifiedUtf8() << " " << dex_file.GetLocation(); in RegisterDexFileLocked()
2947 dex_cache->SetDexFile(&dex_file); in RegisterDexFileLocked()
2954 void ClassLinker::RegisterDexFile(const DexFile& dex_file) { in RegisterDexFile() argument
2958 if (IsDexFileRegisteredLocked(dex_file)) { in RegisterDexFile()
2966 Handle<mirror::DexCache> dex_cache(hs.NewHandle(AllocDexCache(self, dex_file))); in RegisterDexFile()
2968 << dex_file.GetLocation(); in RegisterDexFile()
2971 if (IsDexFileRegisteredLocked(dex_file)) { in RegisterDexFile()
2974 RegisterDexFileLocked(dex_file, dex_cache); in RegisterDexFile()
2978 void ClassLinker::RegisterDexFile(const DexFile& dex_file, in RegisterDexFile() argument
2981 RegisterDexFileLocked(dex_file, dex_cache); in RegisterDexFile()
2984 mirror::DexCache* ClassLinker::FindDexCache(const DexFile& dex_file) { in FindDexCache() argument
2989 if (dex_cache->GetDexFile() == &dex_file) { in FindDexCache()
2994 std::string location(dex_file.GetLocation()); in FindDexCache()
3418 const DexFile* dex_file = dex_cache->GetDexFile(); in LookupClassFromImage() local
3420 const DexFile::StringId* string_id = dex_file->FindStringId(descriptor); in LookupClassFromImage()
3423 dex_file->FindTypeId(dex_file->GetIndexForStringId(*string_id)); in LookupClassFromImage()
3425 uint16_t type_idx = dex_file->GetIndexForTypeId(*type_id); in LookupClassFromImage()
3525 const DexFile& dex_file = *klass->GetDexCache()->GetDexFile(); in VerifyClass() local
3527 bool preverified = VerifyClassUsingOatFile(dex_file, klass.Get(), oat_file_class_status); in VerifyClass()
3552 ResolveClassExceptionHandlerTypes(dex_file, klass); in VerifyClass()
3604 bool ClassLinker::VerifyClassUsingOatFile(const DexFile& dex_file, mirror::Class* klass, in VerifyClassUsingOatFile() argument
3623 const OatFile::OatDexFile* oat_dex_file = FindOpenedOatDexFileForDexFile(dex_file); in VerifyClassUsingOatFile()
3669 << " " << dex_file.GetLocation() << " " << PrettyClass(klass) << " " in VerifyClassUsingOatFile()
3675 void ClassLinker::ResolveClassExceptionHandlerTypes(const DexFile& dex_file, in ResolveClassExceptionHandlerTypes() argument
3678 ResolveMethodExceptionHandlerTypes(dex_file, klass->GetDirectMethod(i)); in ResolveClassExceptionHandlerTypes()
3681 ResolveMethodExceptionHandlerTypes(dex_file, klass->GetVirtualMethod(i)); in ResolveClassExceptionHandlerTypes()
3685 void ClassLinker::ResolveMethodExceptionHandlerTypes(const DexFile& dex_file, in ResolveMethodExceptionHandlerTypes() argument
3688 const DexFile::CodeItem* code_item = dex_file.GetCodeItem(method->GetCodeItemOffset()); in ResolveMethodExceptionHandlerTypes()
4150 const DexFile& dex_file = klass->GetDexFile(); in InitializeClass() local
4154 EncodedStaticFieldValueIterator it(dex_file, &dex_cache, &class_loader, in InitializeClass()
4161 ConstructFieldMap(dex_file, *dex_class_def, klass.Get(), field_map); in InitializeClass()
4314 void ClassLinker::ConstructFieldMap(const DexFile& dex_file, const DexFile::ClassDef& dex_class_def, in ConstructFieldMap() argument
4317 const byte* class_data = dex_file.GetClassData(dex_class_def); in ConstructFieldMap()
4318 ClassDataItemIterator it(dex_file, class_data); in ConstructFieldMap()
4324 field_map.Put(i, ResolveField(dex_file, it.GetMemberIndex(), dex_cache, class_loader, true)); in ConstructFieldMap()
4433 bool ClassLinker::LoadSuperAndInterfaces(Handle<mirror::Class> klass, const DexFile& dex_file) { in LoadSuperAndInterfaces() argument
4435 const DexFile::ClassDef& class_def = dex_file.GetClassDef(klass->GetDexClassDefIndex()); in LoadSuperAndInterfaces()
4438 mirror::Class* super_class = ResolveType(dex_file, super_class_idx, klass.Get()); in LoadSuperAndInterfaces()
4453 const DexFile::TypeList* interfaces = dex_file.GetInterfacesList(class_def); in LoadSuperAndInterfaces()
4457 mirror::Class* interface = ResolveType(dex_file, idx, klass.Get()); in LoadSuperAndInterfaces()
5166 mirror::String* ClassLinker::ResolveString(const DexFile& dex_file, uint32_t string_idx, in ResolveString() argument
5174 const char* utf8_data = dex_file.StringDataAndUtf16LengthByIdx(string_idx, &utf16_length); in ResolveString()
5180 mirror::Class* ClassLinker::ResolveType(const DexFile& dex_file, uint16_t type_idx, in ResolveType() argument
5185 return ResolveType(dex_file, type_idx, dex_cache, class_loader); in ResolveType()
5188 mirror::Class* ClassLinker::ResolveType(const DexFile& dex_file, uint16_t type_idx, in ResolveType() argument
5195 const char* descriptor = dex_file.StringByTypeIdx(type_idx); in ResolveType()
5221 mirror::ArtMethod* ClassLinker::ResolveMethod(const DexFile& dex_file, uint32_t method_idx, in ResolveMethod() argument
5233 const DexFile::MethodId& method_id = dex_file.GetMethodId(method_idx); in ResolveMethod()
5234 mirror::Class* klass = ResolveType(dex_file, method_id.class_idx_, dex_cache, class_loader); in ResolveMethod()
5259 const char* name = dex_file.StringDataByIdx(method_id.name_idx_); in ResolveMethod()
5260 const Signature signature = dex_file.GetMethodSignature(method_id); in ResolveMethod()
5288 const char* name = dex_file.StringDataByIdx(method_id.name_idx_); in ResolveMethod()
5289 const Signature signature = dex_file.GetMethodSignature(method_id); in ResolveMethod()
5374 mirror::ArtField* ClassLinker::ResolveField(const DexFile& dex_file, uint32_t field_idx, in ResolveField() argument
5383 const DexFile::FieldId& field_id = dex_file.GetFieldId(field_idx); in ResolveField()
5387 hs.NewHandle(ResolveType(dex_file, field_id.class_idx_, dex_cache, class_loader))); in ResolveField()
5400 const char* name = dex_file.GetFieldName(field_id); in ResolveField()
5401 const char* type = dex_file.GetFieldTypeDescriptor(field_id); in ResolveField()
5416 mirror::ArtField* ClassLinker::ResolveFieldJLS(const DexFile& dex_file, in ResolveFieldJLS() argument
5425 const DexFile::FieldId& field_id = dex_file.GetFieldId(field_idx); in ResolveFieldJLS()
5429 hs.NewHandle(ResolveType(dex_file, field_id.class_idx_, dex_cache, class_loader))); in ResolveFieldJLS()
5435 StringPiece name(dex_file.StringDataByIdx(field_id.name_idx_)); in ResolveFieldJLS()
5436 StringPiece type(dex_file.StringDataByIdx( in ResolveFieldJLS()
5437 dex_file.GetTypeId(field_id.type_idx_).descriptor_idx_)); in ResolveFieldJLS()
5451 const DexFile& dex_file = *dex_cache->GetDexFile(); in MethodShorty() local
5452 const DexFile::MethodId& method_id = dex_file.GetMethodId(method_idx); in MethodShorty()
5453 return dex_file.GetMethodShorty(method_id, length); in MethodShorty()