Home | History | Annotate | Download | only in driver

Lines Matching full:dex_file

29 #include "dex_file-inl.h"
299 const art::DexFile& dex_file);
307 const art::DexFile& dex_file);
316 const art::DexFile& dex_file);
325 const art::DexFile& dex_file);
329 const art::DexFile& dex_file);
333 const art::DexFile& dex_file);
501 const DexFile& dex_file,
504 const char* descriptor = dex_file.GetClassDescriptor(class_def);
538 const DexFile* dex_file;
546 // Find the dex_file
548 dex_file = &mh.GetDexFile();
554 dex_files.push_back(dex_file);
560 const DexFile::CodeItem* code_item = dex_file->GetCodeItem(method->GetCodeItemOffset());
565 const DexFile::ClassDef& class_def = dex_file->GetClassDef(class_def_idx);
567 dex_to_dex_compilation_level = GetDexToDexCompilationlevel(class_loader, *dex_file, class_def);
570 class_def_idx, method_idx, jclass_loader, *dex_file, dex_to_dex_compilation_level);
580 const DexFile* dex_file = dex_files[i];
581 CHECK(dex_file != NULL);
582 ResolveDexFile(class_loader, *dex_file, thread_pool, timings);
708 const DexFile* dex_file = exception_type.second;
709 mirror::DexCache* dex_cache = class_linker->FindDexCache(*dex_file);
711 SirtRef<mirror::Class> klass(self, class_linker->ResolveType(*dex_file, exception_type_idx,
714 const DexFile::TypeId& type_id = dex_file->GetTypeId(exception_type_idx);
715 const char* descriptor = dex_file->GetTypeDescriptor(type_id);
777 bool CompilerDriver::CanAssumeTypeIsPresentInDexCache(const DexFile& dex_file,
779 if (IsImage() && IsImageClass(dex_file.GetTypeDescriptor(dex_file.GetTypeId(type_idx)))) {
782 mirror::DexCache* dex_cache = Runtime::Current()->GetClassLinker()->FindDexCache(dex_file);
794 bool CompilerDriver::CanAssumeStringIsPresentInDexCache(const DexFile& dex_file,
802 mirror::DexCache* dex_cache = Runtime::Current()->GetClassLinker()->FindDexCache(dex_file);
803 Runtime::Current()->GetClassLinker()->ResolveString(dex_file, string_idx, dex_cache);
814 bool CompilerDriver::CanAccessTypeWithoutChecks(uint32_t referrer_idx, const DexFile& dex_file,
828 mirror::DexCache* dex_cache = Runtime::Current()->GetClassLinker()->FindDexCache(dex_file);
835 const DexFile::MethodId& method_id = dex_file.GetMethodId(referrer_idx);
862 const DexFile& dex_file,
865 mirror::DexCache* dex_cache = Runtime::Current()->GetClassLinker()->FindDexCache(dex_file);
872 const DexFile::MethodId& method_id = dex_file.GetMethodId(referrer_idx);
946 const DexFile& dex_file = *referrer_class->GetDexCache()->GetDexFile();
947 mirror::Class* dex_fields_class = mUnit->GetClassLinker()->ResolveType(dex_file,
948 dex_file.GetFieldId(field_idx).class_idx_,
1005 const DexFile& dex_file = *referrer_class->GetDexCache()->GetDexFile();
1007 mUnit->GetClassLinker()->ResolveType(dex_file,
1008 dex_file.GetFieldId(field_idx).class_idx_,
1143 target_method.dex_file->GetMethodId(target_method.dex_method_index).class_idx_;
1144 methods_class = mUnit->GetClassLinker()->ResolveType(*target_method.dex_file,
1185 mUnit->GetClassLinker()->FindDexCache(*devirt_map_target->dex_file);
1189 mUnit->GetClassLinker()->ResolveMethod(*devirt_map_target->dex_file,
1202 if ((devirt_map_target->dex_file != target_method.dex_file) &&
1212 const DexFile* dexfile = target_method.dex_file;
1303 void CompilerDriver::AddCodePatch(const DexFile* dex_file,
1311 code_to_patch_.push_back(new PatchInformation(dex_file,
1319 void CompilerDriver::AddMethodPatch(const DexFile* dex_file,
1327 methods_to_patch_.push_back(new PatchInformation(dex_file,
1343 const DexFile* dex_file,
1349 dex_file_(dex_file),
1443 static bool SkipClass(ClassLinker* class_linker, jobject class_loader, const DexFile& dex_file,
1445 const char* descriptor = dex_file.GetClassDescriptor(class_def);
1449 if (pair.first != &dex_file) {
1450 LOG(WARNING) << "Skipping class " << descriptor << " from " << dex_file.GetLocation()
1461 static bool SkipClass(jobject class_loader, const DexFile& dex_file, mirror::Class* klass)
1465 if (&dex_file != &original_dex_file) {
1468 << dex_file.GetLocation() << " previously found in "
1482 const DexFile& dex_file = *manager->GetDexFile();
1497 const DexFile::ClassDef& class_def = dex_file.GetClassDef(class_def_index);
1498 if (!SkipClass(class_linker, jclass_loader, dex_file, class_def)) {
1501 mirror::DexCache* dex_cache = class_linker->FindDexCache(dex_file);
1504 mirror::Class* klass = class_linker->ResolveType(dex_file, class_def.class_idx_, dex_cache,
1520 const byte* class_data = dex_file.GetClassData(class_def);
1525 ClassDataItemIterator it(dex_file, class_data);
1528 mirror::ArtField* field = class_linker->ResolveField(dex_file, it.GetMemberIndex(),
1544 mirror::ArtField* field = class_linker->ResolveField(dex_file, it.GetMemberIndex(),
1555 mirror::ArtMethod* method = class_linker->ResolveMethod(dex_file, it.GetMemberIndex(),
1565 mirror::ArtMethod* method = class_linker->ResolveMethod(dex_file, it.GetMemberIndex(),
1579 manager->GetCompiler()->AddRequiresConstructorBarrier(self, &dex_file, class_def_index);
1588 const DexFile& dex_file = *manager->GetDexFile();
1589 mirror::DexCache* dex_cache = class_linker->FindDexCache(dex_file);
1591 mirror::Class* klass = class_linker->ResolveType(dex_file, type_idx, dex_cache, class_loader);
1606 void CompilerDriver::ResolveDexFile(jobject class_loader, const DexFile& dex_file,
1613 ParallelCompilationManager context(class_linker, class_loader, this, &dex_file, thread_pool);
1618 timings.NewSplit(strdup(("Resolve " + dex_file.GetLocation() + " Types").c_str()));
1619 context.ForAll(0, dex_file.NumTypeIds(), ResolveType, thread_count_);
1623 timings.NewSplit(strdup(("Resolve " + dex_file.GetLocation() + " MethodsAndFields").c_str()));
1624 context.ForAll(0, dex_file.NumClassDefs(), ResolveClassFieldsAndMethods, thread_count_);
1630 const DexFile* dex_file = dex_files[i];
1631 CHECK(dex_file != NULL);
1632 VerifyDexFile(class_loader, *dex_file, thread_pool, timings);
1640 const DexFile& dex_file = *manager->GetDexFile();
1641 const DexFile::ClassDef& class_def = dex_file.GetClassDef(class_def_index);
1642 const char* descriptor = dex_file.GetClassDescriptor(class_def);
1656 mirror::DexCache* dex_cache = class_linker->FindDexCache(dex_file);
1658 if (verifier::MethodVerifier::VerifyClass(&dex_file, dex_cache,
1665 } else if (!SkipClass(jclass_loader, dex_file, klass)) {
1681 void CompilerDriver::VerifyDexFile(jobject class_loader, const DexFile& dex_file,
1684 timings.NewSplit(strdup(("Verify " + dex_file.GetLocation()).c_str()));
1686 ParallelCompilationManager context(class_linker, class_loader, this, &dex_file, thread_pool);
1687 context.ForAll(0, dex_file.NumClassDefs(), VerifyClass, thread_count_);
2112 const DexFile& dex_file = *manager->GetDexFile();
2113 const DexFile::ClassDef& class_def = dex_file.GetClassDef(class_def_index);
2114 const char* descriptor = dex_file.GetClassDescriptor(class_def);
2120 if (klass != NULL && !SkipClass(jclass_loader, dex_file, klass)) {
2186 void CompilerDriver::InitializeClasses(jobject jni_class_loader, const DexFile& dex_file,
2189 timings.NewSplit(strdup(("InitializeNoClinit " + dex_file.GetLocation()).c_str()));
2200 ParallelCompilationManager context(class_linker, jni_class_loader, this, &dex_file, thread_pool);
2201 context.ForAll(0, dex_file.NumClassDefs(), InitializeClass, thread_count_);
2208 const DexFile* dex_file = dex_files[i];
2209 CHECK(dex_file != NULL);
2210 InitializeClasses(class_loader, *dex_file, thread_pool, timings);
2217 const DexFile* dex_file = dex_files[i];
2218 CHECK(dex_file != NULL);
2219 CompileDexFile(class_loader, *dex_file, thread_pool, timings);
2226 const DexFile& dex_file = *manager->GetDexFile();
2227 const DexFile::ClassDef& class_def = dex_file.GetClassDef(class_def_index);
2229 if (SkipClass(class_linker, jclass_loader, dex_file, class_def)) {
2232 ClassReference ref(&dex_file, class_def_index);
2237 const byte* class_data = dex_file.GetClassData(class_def);
2248 dex_to_dex_compilation_level = GetDexToDexCompilationlevel(class_loader, dex_file, class_def);
2250 ClassDataItemIterator it(dex_file, class_data);
2272 method_idx, jclass_loader, dex_file, dex_to_dex_compilation_level);
2288 method_idx, jclass_loader, dex_file, dex_to_dex_compilation_level);
2294 void CompilerDriver::CompileDexFile(jobject class_loader, const DexFile& dex_file,
2297 timings.NewSplit(strdup(("Compile " + dex_file.GetLocation()).c_str()));
2299 &dex_file, thread_pool);
2300 context.ForAll(0, dex_file.NumClassDefs(), CompilerDriver::CompileClass, thread_count_);
2306 const DexFile& dex_file,
2312 compiled_method = (*jni_compiler_)(*this, access_flags, method_idx, dex_file);
2316 MethodReference method_ref(&dex_file, method_idx);
2324 (std::string::npos != PrettyMethod(method_idx, dex_file).find("fibonacci"));
2332 method_idx, class_loader, dex_file);
2337 method_idx, class_loader, dex_file,
2348 LOG(WARNING) << "Compilation of " << PrettyMethod(method_idx, dex_file)
2354 MethodReference ref(&dex_file, method_idx);
2355 DCHECK(GetCompiledMethod(ref) == NULL) << PrettyMethod(method_idx, dex_file);
2360 DCHECK(GetCompiledMethod(ref) != NULL) << PrettyMethod(method_idx, dex_file);
2365 LOG(FATAL) << "Unexpected exception compiling: " << PrettyMethod(method_idx, dex_file) << "\n"
2426 void CompilerDriver::AddRequiresConstructorBarrier(Thread* self, const DexFile* dex_file,
2429 freezing_constructor_classes_.insert(ClassReference(dex_file, class_def_index));
2432 bool CompilerDriver::RequiresConstructorBarrier(Thread* self, const DexFile* dex_file,
2435 return freezing_constructor_classes_.count(ClassReference(dex_file, class_def_index)) != 0;