Lines Matching refs:dex_file
43 for (const DexFile* dex_file : dex_files) { in VerifierDeps() local
44 DCHECK(GetDexFileDeps(*dex_file) == nullptr); in VerifierDeps()
45 std::unique_ptr<DexFileDeps> deps(new DexFileDeps(dex_file->NumClassDefs())); in VerifierDeps()
46 dex_deps_.emplace(dex_file, std::move(deps)); in VerifierDeps()
63 for (const DexFile* dex_file : dex_files) { in MergeWith() local
64 DexFileDeps* my_deps = GetDexFileDeps(*dex_file); in MergeWith()
65 DexFileDeps& other_deps = *other->GetDexFileDeps(*dex_file); in MergeWith()
79 VerifierDeps::DexFileDeps* VerifierDeps::GetDexFileDeps(const DexFile& dex_file) { in GetDexFileDeps() argument
80 auto it = dex_deps_.find(&dex_file); in GetDexFileDeps()
84 const VerifierDeps::DexFileDeps* VerifierDeps::GetDexFileDeps(const DexFile& dex_file) const { in GetDexFileDeps()
85 auto it = dex_deps_.find(&dex_file); in GetDexFileDeps()
89 dex::StringIndex VerifierDeps::GetClassDescriptorStringId(const DexFile& dex_file, in GetClassDescriptorStringId() argument
96 if (dex_cache->GetDexFile() == &dex_file) { in GetClassDescriptorStringId()
100 const dex::TypeId& type_id = dex_file.GetTypeId(class_def->class_idx_); in GetClassDescriptorStringId()
103 CHECK_EQ(GetIdFromString(dex_file, klass->GetDescriptor(&temp)), type_id.descriptor_idx_); in GetClassDescriptorStringId()
109 return GetIdFromString(dex_file, klass->GetDescriptor(&temp)); in GetClassDescriptorStringId()
137 dex::StringIndex VerifierDeps::GetIdFromString(const DexFile& dex_file, const std::string& str) { in GetIdFromString() argument
138 const dex::StringId* string_id = dex_file.FindStringId(str.c_str()); in GetIdFromString()
141 return dex_file.GetIndexForStringId(*string_id); in GetIdFromString()
150 DexFileDeps* deps = singleton->GetDexFileDeps(dex_file); in GetIdFromString()
153 uint32_t num_ids_in_dex = dex_file.NumStringIds(); in GetIdFromString()
170 DCHECK_EQ(str, singleton->GetStringFromId(dex_file, new_id)); in GetIdFromString()
175 std::string VerifierDeps::GetStringFromId(const DexFile& dex_file, in GetStringFromId() argument
177 uint32_t num_ids_in_dex = dex_file.NumStringIds(); in GetStringFromId()
179 return std::string(dex_file.StringDataByIdx(string_id)); in GetStringFromId()
181 const DexFileDeps* deps = GetDexFileDeps(dex_file); in GetStringFromId()
189 void VerifierDeps::AddAssignability(const DexFile& dex_file, in AddAssignability() argument
224 AddAssignability(dex_file, class_def, destination_component, source_component); in AddAssignability()
229 DexFileDeps* dex_deps = GetDexFileDeps(dex_file); in AddAssignability()
236 dex::StringIndex destination_id = GetClassDescriptorStringId(dex_file, destination); in AddAssignability()
237 dex::StringIndex source_id = GetClassDescriptorStringId(dex_file, source); in AddAssignability()
239 uint16_t index = dex_file.GetIndexForClassDef(class_def); in AddAssignability()
243 void VerifierDeps::AddAssignability(const DexFile& dex_file, in AddAssignability() argument
247 DexFileDeps* dex_deps = GetDexFileDeps(dex_file); in AddAssignability()
259 GetIdFromString(dex_file, std::string(destination.GetDescriptor())); in AddAssignability()
260 dex::StringIndex source_id = GetIdFromString(dex_file, std::string(source.GetDescriptor())); in AddAssignability()
261 uint16_t index = dex_file.GetIndexForClassDef(class_def); in AddAssignability()
268 AddAssignability(dex_file, class_def, destination, merge.GetResolvedPart()); in AddAssignability()
270 AddAssignability(dex_file, class_def, destination, merge.GetRegTypeCache()->GetFromId(idx)); in AddAssignability()
276 const DexFile& dex_file, in MaybeRecordVerificationStatus() argument
284 DexFileDeps* dex_deps = verifier_deps->GetDexFileDeps(dex_file); in MaybeRecordVerificationStatus()
285 uint16_t index = dex_file.GetIndexForClassDef(class_def); in MaybeRecordVerificationStatus()
292 verifier_deps->RecordClassVerified(dex_file, class_def); in MaybeRecordVerificationStatus()
299 void VerifierDeps::RecordClassVerified(const DexFile& dex_file, const dex::ClassDef& class_def) { in RecordClassVerified() argument
300 DexFileDeps* dex_deps = GetDexFileDeps(dex_file); in RecordClassVerified()
301 DCHECK_EQ(dex_deps->verified_classes_.size(), dex_file.NumClassDefs()); in RecordClassVerified()
302 dex_deps->verified_classes_[dex_file.GetIndexForClassDef(class_def)] = true; in RecordClassVerified()
305 bool VerifierDeps::HasRecordedVerifiedStatus(const DexFile& dex_file, in HasRecordedVerifiedStatus() argument
307 DexFileDeps* dex_deps = GetDexFileDeps(dex_file); in HasRecordedVerifiedStatus()
308 DCHECK_EQ(dex_deps->verified_classes_.size(), dex_file.NumClassDefs()); in HasRecordedVerifiedStatus()
309 return dex_deps->verified_classes_[dex_file.GetIndexForClassDef(class_def)]; in HasRecordedVerifiedStatus()
313 const DexFile& dex_file, in MaybeRecordAssignability() argument
318 verifier_deps->AddAssignability(dex_file, class_def, destination, source); in MaybeRecordAssignability()
323 const DexFile& dex_file, in MaybeRecordAssignability() argument
328 verifier_deps->AddAssignability(dex_file, class_def, destination, source); in MaybeRecordAssignability()
520 for (const DexFile* dex_file : dex_files) { in Encode() local
524 const DexFileDeps& deps = *GetDexFileDeps(*dex_file); in Encode()
560 for (const DexFile* dex_file : dex_files) { in ParseStoredData() local
561 DexFileDeps* deps = GetDexFileDeps(*dex_file); in ParseStoredData()
564 size_t num_class_defs = dex_file->NumClassDefs(); in ParseStoredData()
567 LOG(ERROR) << "Failed to parse dex file dependencies for " << dex_file->GetLocation(); in ParseStoredData()
589 for (const DexFile* dex_file : dex_files) { in ParseVerifiedClasses() local
593 size_t num_class_defs = dex_file->NumClassDefs(); in ParseVerifiedClasses()
597 LOG(ERROR) << "Failed to parse dex file dependencies for " << dex_file->GetLocation(); in ParseVerifiedClasses()
649 const DexFile& dex_file = *dep.first; in Dump() local
650 vios->Stream() << "Dependencies of " << dex_file.GetLocation() << ":\n"; in Dump()
659 vios->Stream() << "Dependencies of " << dex_file.GetClassDescriptor(dex_file.GetClassDef(idx)) in Dump()
662 vios->Stream() << GetStringFromId(dex_file, entry.GetSource()) << " must be assignable to " in Dump()
663 << GetStringFromId(dex_file, entry.GetDestination()) << "\n"; in Dump()
669 vios->Stream() << dex_file.GetClassDescriptor(dex_file.GetClassDef(idx)) in Dump()
680 for (const auto* dex_file : dex_files) { in ValidateDependencies() local
681 const DexFileDeps* my_deps = GetDexFileDeps(*dex_file); in ValidateDependencies()
682 if (!VerifyDexFile(class_loader, *dex_file, *my_deps, self, error_msg)) { in ValidateDependencies()
705 const DexFile& dex_file, in VerifyAssignability() argument
716 const std::string& destination_desc = GetStringFromId(dex_file, entry.GetDestination()); in VerifyAssignability()
719 const std::string& source_desc = GetStringFromId(dex_file, entry.GetSource()); in VerifyAssignability()
740 for (const DexFile* dex_file : dex_files) { in ClearData() local
741 auto it = dex_deps_.find(dex_file); in ClearData()
745 std::unique_ptr<DexFileDeps> deps(new DexFileDeps(dex_file->NumClassDefs())); in ClearData()
751 const DexFile& dex_file, in VerifyDexFile() argument
755 return VerifyAssignability(class_loader, dex_file, deps.assignable_types_, self, error_msg); in VerifyDexFile()