diff options
Diffstat (limited to 'dexlayout')
| -rw-r--r-- | dexlayout/dex_ir_builder.cc | 86 | ||||
| -rw-r--r-- | dexlayout/dex_writer.cc | 6 | ||||
| -rw-r--r-- | dexlayout/dexlayout.h | 2 | ||||
| -rw-r--r-- | dexlayout/dexlayout_test.cc | 6 |
4 files changed, 50 insertions, 50 deletions
diff --git a/dexlayout/dex_ir_builder.cc b/dexlayout/dex_ir_builder.cc index 92e438c8a5..f4195b257d 100644 --- a/dexlayout/dex_ir_builder.cc +++ b/dexlayout/dex_ir_builder.cc @@ -152,21 +152,21 @@ class BuilderMaps { void CreateCallSitesAndMethodHandles(const DexFile& dex_file); - TypeList* CreateTypeList(const DexFile::TypeList* type_list, uint32_t offset); + TypeList* CreateTypeList(const dex::TypeList* type_list, uint32_t offset); EncodedArrayItem* CreateEncodedArrayItem(const DexFile& dex_file, const uint8_t* static_data, uint32_t offset); AnnotationItem* CreateAnnotationItem(const DexFile& dex_file, - const DexFile::AnnotationItem* annotation); + const dex::AnnotationItem* annotation); AnnotationSetItem* CreateAnnotationSetItem(const DexFile& dex_file, - const DexFile::AnnotationSetItem* disk_annotations_item, uint32_t offset); + const dex::AnnotationSetItem* disk_annotations_item, uint32_t offset); AnnotationsDirectoryItem* CreateAnnotationsDirectoryItem(const DexFile& dex_file, - const DexFile::AnnotationsDirectoryItem* disk_annotations_item, uint32_t offset); + const dex::AnnotationsDirectoryItem* disk_annotations_item, uint32_t offset); CodeItem* DedupeOrCreateCodeItem(const DexFile& dex_file, - const DexFile::CodeItem* disk_code_item, + const dex::CodeItem* disk_code_item, uint32_t offset, uint32_t dex_method_index); - ClassData* CreateClassData(const DexFile& dex_file, const DexFile::ClassDef& class_def); + ClassData* CreateClassData(const DexFile& dex_file, const dex::ClassDef& class_def); void AddAnnotationsFromMapListSection(const DexFile& dex_file, uint32_t start_offset, @@ -207,7 +207,7 @@ class BuilderMaps { ParameterAnnotation* GenerateParameterAnnotation( const DexFile& dex_file, MethodId* method_id, - const DexFile::AnnotationSetRefList* annotation_set_ref_list, + const dex::AnnotationSetRefList* annotation_set_ref_list, uint32_t offset); template <typename Type, class... Args> @@ -300,7 +300,7 @@ Header* DexIrBuilder(const DexFile& dex_file, if (!options.class_filter_.empty()) { // If the filter is enabled (not empty), filter out classes that don't have a matching // descriptor. - const DexFile::ClassDef& class_def = dex_file.GetClassDef(i); + const dex::ClassDef& class_def = dex_file.GetClassDef(i); const char* descriptor = dex_file.GetClassDescriptor(class_def); if (options.class_filter_.find(descriptor) == options.class_filter_.end()) { continue; @@ -331,10 +331,10 @@ Header* DexIrBuilder(const DexFile& dex_file, void BuilderMaps::CheckAndSetRemainingOffsets(const DexFile& dex_file, const Options& options) { const DexFile::Header& disk_header = dex_file.GetHeader(); // Read MapItems and validate/set remaining offsets. - const DexFile::MapList* map = dex_file.GetMapList(); + const dex::MapList* map = dex_file.GetMapList(); const uint32_t count = map->size_; for (uint32_t i = 0; i < count; ++i) { - const DexFile::MapItem* item = map->list_ + i; + const dex::MapItem* item = map->list_ + i; switch (item->type_) { case DexFile::kDexTypeHeaderItem: CHECK_EQ(item->size_, 1u); @@ -421,7 +421,7 @@ void BuilderMaps::CheckAndSetRemainingOffsets(const DexFile& dex_file, const Opt } void BuilderMaps::CreateStringId(const DexFile& dex_file, uint32_t i) { - const DexFile::StringId& disk_string_id = dex_file.GetStringId(dex::StringIndex(i)); + const dex::StringId& disk_string_id = dex_file.GetStringId(dex::StringIndex(i)); StringData* string_data = string_datas_map_.CreateAndAddItem(header_->StringDatas(), eagerly_assign_offsets_, @@ -434,7 +434,7 @@ void BuilderMaps::CreateStringId(const DexFile& dex_file, uint32_t i) { } void BuilderMaps::CreateTypeId(const DexFile& dex_file, uint32_t i) { - const DexFile::TypeId& disk_type_id = dex_file.GetTypeId(dex::TypeIndex(i)); + const dex::TypeId& disk_type_id = dex_file.GetTypeId(dex::TypeIndex(i)); CreateAndAddIndexedItem(header_->TypeIds(), header_->TypeIds().GetOffset() + i * TypeId::ItemSize(), i, @@ -442,8 +442,8 @@ void BuilderMaps::CreateTypeId(const DexFile& dex_file, uint32_t i) { } void BuilderMaps::CreateProtoId(const DexFile& dex_file, uint32_t i) { - const DexFile::ProtoId& disk_proto_id = dex_file.GetProtoId(dex::ProtoIndex(i)); - const DexFile::TypeList* type_list = dex_file.GetProtoParameters(disk_proto_id); + const dex::ProtoId& disk_proto_id = dex_file.GetProtoId(dex::ProtoIndex(i)); + const dex::TypeList* type_list = dex_file.GetProtoParameters(disk_proto_id); TypeList* parameter_type_list = CreateTypeList(type_list, disk_proto_id.parameters_off_); CreateAndAddIndexedItem(header_->ProtoIds(), @@ -455,7 +455,7 @@ void BuilderMaps::CreateProtoId(const DexFile& dex_file, uint32_t i) { } void BuilderMaps::CreateFieldId(const DexFile& dex_file, uint32_t i) { - const DexFile::FieldId& disk_field_id = dex_file.GetFieldId(i); + const dex::FieldId& disk_field_id = dex_file.GetFieldId(i); CreateAndAddIndexedItem(header_->FieldIds(), header_->FieldIds().GetOffset() + i * FieldId::ItemSize(), i, @@ -465,7 +465,7 @@ void BuilderMaps::CreateFieldId(const DexFile& dex_file, uint32_t i) { } void BuilderMaps::CreateMethodId(const DexFile& dex_file, uint32_t i) { - const DexFile::MethodId& disk_method_id = dex_file.GetMethodId(i); + const dex::MethodId& disk_method_id = dex_file.GetMethodId(i); CreateAndAddIndexedItem(header_->MethodIds(), header_->MethodIds().GetOffset() + i * MethodId::ItemSize(), i, @@ -475,19 +475,19 @@ void BuilderMaps::CreateMethodId(const DexFile& dex_file, uint32_t i) { } void BuilderMaps::CreateClassDef(const DexFile& dex_file, uint32_t i) { - const DexFile::ClassDef& disk_class_def = dex_file.GetClassDef(i); + const dex::ClassDef& disk_class_def = dex_file.GetClassDef(i); const TypeId* class_type = header_->TypeIds()[disk_class_def.class_idx_.index_]; uint32_t access_flags = disk_class_def.access_flags_; const TypeId* superclass = header_->GetTypeIdOrNullPtr(disk_class_def.superclass_idx_.index_); - const DexFile::TypeList* type_list = dex_file.GetInterfacesList(disk_class_def); + const dex::TypeList* type_list = dex_file.GetInterfacesList(disk_class_def); TypeList* interfaces_type_list = CreateTypeList(type_list, disk_class_def.interfaces_off_); const StringId* source_file = header_->GetStringIdOrNullPtr(disk_class_def.source_file_idx_.index_); // Annotations. AnnotationsDirectoryItem* annotations = nullptr; - const DexFile::AnnotationsDirectoryItem* disk_annotations_directory_item = + const dex::AnnotationsDirectoryItem* disk_annotations_directory_item = dex_file.GetAnnotationsDirectory(disk_class_def); if (disk_annotations_directory_item != nullptr) { annotations = CreateAnnotationsDirectoryItem( @@ -512,7 +512,7 @@ void BuilderMaps::CreateClassDef(const DexFile& dex_file, uint32_t i) { } void BuilderMaps::CreateCallSiteId(const DexFile& dex_file, uint32_t i) { - const DexFile::CallSiteIdItem& disk_call_site_id = dex_file.GetCallSiteId(i); + const dex::CallSiteIdItem& disk_call_site_id = dex_file.GetCallSiteId(i); const uint8_t* disk_call_item_ptr = dex_file.DataBegin() + disk_call_site_id.data_off_; EncodedArrayItem* call_site_item = CreateEncodedArrayItem(dex_file, disk_call_item_ptr, disk_call_site_id.data_off_); @@ -524,7 +524,7 @@ void BuilderMaps::CreateCallSiteId(const DexFile& dex_file, uint32_t i) { } void BuilderMaps::CreateMethodHandleItem(const DexFile& dex_file, uint32_t i) { - const DexFile::MethodHandleItem& disk_method_handle = dex_file.GetMethodHandle(i); + const dex::MethodHandleItem& disk_method_handle = dex_file.GetMethodHandle(i); uint16_t index = disk_method_handle.field_or_method_idx_; DexFile::MethodHandleType type = static_cast<DexFile::MethodHandleType>(disk_method_handle.method_handle_type_); @@ -551,9 +551,9 @@ void BuilderMaps::CreateMethodHandleItem(const DexFile& dex_file, uint32_t i) { void BuilderMaps::CreateCallSitesAndMethodHandles(const DexFile& dex_file) { // Iterate through the map list and set the offset of the CallSiteIds and MethodHandleItems. - const DexFile::MapList* map = dex_file.GetMapList(); + const dex::MapList* map = dex_file.GetMapList(); for (uint32_t i = 0; i < map->size_; ++i) { - const DexFile::MapItem* item = map->list_ + i; + const dex::MapItem* item = map->list_ + i; switch (item->type_) { case DexFile::kDexTypeCallSiteIdItem: header_->CallSiteIds().SetOffset(item->offset_); @@ -575,7 +575,7 @@ void BuilderMaps::CreateCallSitesAndMethodHandles(const DexFile& dex_file) { } } -TypeList* BuilderMaps::CreateTypeList(const DexFile::TypeList* dex_type_list, uint32_t offset) { +TypeList* BuilderMaps::CreateTypeList(const dex::TypeList* dex_type_list, uint32_t offset) { if (dex_type_list == nullptr) { return nullptr; } @@ -623,7 +623,7 @@ void BuilderMaps::AddAnnotationsFromMapListSection(const DexFile& dex_file, uint32_t current_offset = start_offset; for (size_t i = 0; i < count; ++i) { // Annotation that we didn't process already, add it to the set. - const DexFile::AnnotationItem* annotation = dex_file.GetAnnotationItemAtOffset(current_offset); + const dex::AnnotationItem* annotation = dex_file.GetAnnotationItemAtOffset(current_offset); AnnotationItem* annotation_item = CreateAnnotationItem(dex_file, annotation); DCHECK(annotation_item != nullptr); current_offset += annotation_item->GetSize(); @@ -632,7 +632,7 @@ void BuilderMaps::AddAnnotationsFromMapListSection(const DexFile& dex_file, void BuilderMaps::AddHiddenapiClassDataFromMapListSection(const DexFile& dex_file, uint32_t offset) { - const DexFile::HiddenapiClassData* hiddenapi_class_data = + const dex::HiddenapiClassData* hiddenapi_class_data = dex_file.GetHiddenapiClassDataAtOffset(offset); DCHECK(hiddenapi_class_data == dex_file.GetHiddenapiClassData()); @@ -669,7 +669,7 @@ void BuilderMaps::AddHiddenapiClassDataFromMapListSection(const DexFile& dex_fil } AnnotationItem* BuilderMaps::CreateAnnotationItem(const DexFile& dex_file, - const DexFile::AnnotationItem* annotation) { + const dex::AnnotationItem* annotation) { const uint8_t* const start_data = reinterpret_cast<const uint8_t*>(annotation); const uint32_t offset = start_data - dex_file.DataBegin(); AnnotationItem* annotation_item = annotation_items_map_.GetExistingObject(offset); @@ -691,7 +691,7 @@ AnnotationItem* BuilderMaps::CreateAnnotationItem(const DexFile& dex_file, AnnotationSetItem* BuilderMaps::CreateAnnotationSetItem(const DexFile& dex_file, - const DexFile::AnnotationSetItem* disk_annotations_item, uint32_t offset) { + const dex::AnnotationSetItem* disk_annotations_item, uint32_t offset) { if (disk_annotations_item == nullptr || (disk_annotations_item->size_ == 0 && offset == 0)) { return nullptr; } @@ -699,7 +699,7 @@ AnnotationSetItem* BuilderMaps::CreateAnnotationSetItem(const DexFile& dex_file, if (annotation_set_item == nullptr) { std::vector<AnnotationItem*>* items = new std::vector<AnnotationItem*>(); for (uint32_t i = 0; i < disk_annotations_item->size_; ++i) { - const DexFile::AnnotationItem* annotation = + const dex::AnnotationItem* annotation = dex_file.GetAnnotationItem(disk_annotations_item, i); if (annotation == nullptr) { continue; @@ -717,27 +717,27 @@ AnnotationSetItem* BuilderMaps::CreateAnnotationSetItem(const DexFile& dex_file, } AnnotationsDirectoryItem* BuilderMaps::CreateAnnotationsDirectoryItem(const DexFile& dex_file, - const DexFile::AnnotationsDirectoryItem* disk_annotations_item, uint32_t offset) { + const dex::AnnotationsDirectoryItem* disk_annotations_item, uint32_t offset) { AnnotationsDirectoryItem* annotations_directory_item = annotations_directory_items_map_.GetExistingObject(offset); if (annotations_directory_item != nullptr) { return annotations_directory_item; } - const DexFile::AnnotationSetItem* class_set_item = + const dex::AnnotationSetItem* class_set_item = dex_file.GetClassAnnotationSet(disk_annotations_item); AnnotationSetItem* class_annotation = nullptr; if (class_set_item != nullptr) { uint32_t item_offset = disk_annotations_item->class_annotations_off_; class_annotation = CreateAnnotationSetItem(dex_file, class_set_item, item_offset); } - const DexFile::FieldAnnotationsItem* fields = + const dex::FieldAnnotationsItem* fields = dex_file.GetFieldAnnotations(disk_annotations_item); FieldAnnotationVector* field_annotations = nullptr; if (fields != nullptr) { field_annotations = new FieldAnnotationVector(); for (uint32_t i = 0; i < disk_annotations_item->fields_size_; ++i) { FieldId* field_id = header_->FieldIds()[fields[i].field_idx_]; - const DexFile::AnnotationSetItem* field_set_item = + const dex::AnnotationSetItem* field_set_item = dex_file.GetFieldAnnotationSetItem(fields[i]); uint32_t annotation_set_offset = fields[i].annotations_off_; AnnotationSetItem* annotation_set_item = @@ -746,14 +746,14 @@ AnnotationsDirectoryItem* BuilderMaps::CreateAnnotationsDirectoryItem(const DexF field_id, annotation_set_item)); } } - const DexFile::MethodAnnotationsItem* methods = + const dex::MethodAnnotationsItem* methods = dex_file.GetMethodAnnotations(disk_annotations_item); MethodAnnotationVector* method_annotations = nullptr; if (methods != nullptr) { method_annotations = new MethodAnnotationVector(); for (uint32_t i = 0; i < disk_annotations_item->methods_size_; ++i) { MethodId* method_id = header_->MethodIds()[methods[i].method_idx_]; - const DexFile::AnnotationSetItem* method_set_item = + const dex::AnnotationSetItem* method_set_item = dex_file.GetMethodAnnotationSetItem(methods[i]); uint32_t annotation_set_offset = methods[i].annotations_off_; AnnotationSetItem* annotation_set_item = @@ -762,14 +762,14 @@ AnnotationsDirectoryItem* BuilderMaps::CreateAnnotationsDirectoryItem(const DexF method_id, annotation_set_item)); } } - const DexFile::ParameterAnnotationsItem* parameters = + const dex::ParameterAnnotationsItem* parameters = dex_file.GetParameterAnnotations(disk_annotations_item); ParameterAnnotationVector* parameter_annotations = nullptr; if (parameters != nullptr) { parameter_annotations = new ParameterAnnotationVector(); for (uint32_t i = 0; i < disk_annotations_item->parameters_size_; ++i) { MethodId* method_id = header_->MethodIds()[parameters[i].method_idx_]; - const DexFile::AnnotationSetRefList* list = + const dex::AnnotationSetRefList* list = dex_file.GetParameterAnnotationSetRefList(¶meters[i]); parameter_annotations->push_back(std::unique_ptr<ParameterAnnotation>( GenerateParameterAnnotation(dex_file, method_id, list, parameters[i].annotations_off_))); @@ -786,7 +786,7 @@ AnnotationsDirectoryItem* BuilderMaps::CreateAnnotationsDirectoryItem(const DexF } CodeItem* BuilderMaps::DedupeOrCreateCodeItem(const DexFile& dex_file, - const DexFile::CodeItem* disk_code_item, + const dex::CodeItem* disk_code_item, uint32_t offset, uint32_t dex_method_index) { if (disk_code_item == nullptr) { @@ -827,7 +827,7 @@ CodeItem* BuilderMaps::DedupeOrCreateCodeItem(const DexFile& dex_file, if (accessor.TriesSize() > 0) { tries = new TryItemVector(); handler_list = new CatchHandlerVector(); - for (const DexFile::TryItem& disk_try_item : accessor.TryItems()) { + for (const dex::TryItem& disk_try_item : accessor.TryItems()) { uint32_t start_addr = disk_try_item.start_addr_; uint16_t insn_count = disk_try_item.insn_count_; uint16_t handler_off = disk_try_item.handler_off_; @@ -941,7 +941,7 @@ CodeItem* BuilderMaps::DedupeOrCreateCodeItem(const DexFile& dex_file, } ClassData* BuilderMaps::CreateClassData(const DexFile& dex_file, - const DexFile::ClassDef& class_def) { + const dex::ClassDef& class_def) { // Read the fields and methods defined by the class, resolving the circular reference from those // to classes by setting class at the same time. const uint32_t offset = class_def.class_data_off_; @@ -1225,7 +1225,7 @@ MethodItem BuilderMaps::GenerateMethodItem(const DexFile& dex_file, const ClassAccessor::Method& method) { MethodId* method_id = header_->MethodIds()[method.GetIndex()]; uint32_t access_flags = method.GetAccessFlags(); - const DexFile::CodeItem* disk_code_item = method.GetCodeItem(); + const dex::CodeItem* disk_code_item = method.GetCodeItem(); // Temporary hack to prevent incorrectly deduping code items if they have the same offset since // they may have different debug info streams. CodeItem* code_item = DedupeOrCreateCodeItem(dex_file, @@ -1238,13 +1238,13 @@ MethodItem BuilderMaps::GenerateMethodItem(const DexFile& dex_file, ParameterAnnotation* BuilderMaps::GenerateParameterAnnotation( const DexFile& dex_file, MethodId* method_id, - const DexFile::AnnotationSetRefList* annotation_set_ref_list, + const dex::AnnotationSetRefList* annotation_set_ref_list, uint32_t offset) { AnnotationSetRefList* set_ref_list = annotation_set_ref_lists_map_.GetExistingObject(offset); if (set_ref_list == nullptr) { std::vector<AnnotationSetItem*>* annotations = new std::vector<AnnotationSetItem*>(); for (uint32_t i = 0; i < annotation_set_ref_list->size_; ++i) { - const DexFile::AnnotationSetItem* annotation_set_item = + const dex::AnnotationSetItem* annotation_set_item = dex_file.GetSetRefItemItem(&annotation_set_ref_list->list_[i]); uint32_t set_offset = annotation_set_ref_list->list_[i].annotations_off_; annotations->push_back(CreateAnnotationSetItem(dex_file, annotation_set_item, set_offset)); diff --git a/dexlayout/dex_writer.cc b/dexlayout/dex_writer.cc index ef6ccf9304..143f5b05eb 100644 --- a/dexlayout/dex_writer.cc +++ b/dexlayout/dex_writer.cc @@ -535,10 +535,10 @@ void DexWriter::WriteCodeItemPostInstructionData(Stream* stream, dex_ir::CodeItem* code_item, bool reserve_only) { if (code_item->TriesSize() != 0) { - stream->AlignTo(DexFile::TryItem::kAlignment); + stream->AlignTo(dex::TryItem::kAlignment); // Write try items. for (std::unique_ptr<const dex_ir::TryItem>& try_item : *code_item->Tries()) { - DexFile::TryItem disk_try_item; + dex::TryItem disk_try_item; if (!reserve_only) { disk_try_item.start_addr_ = try_item->StartAddr(); disk_try_item.insn_count_ = try_item->InsnCount(); @@ -712,7 +712,7 @@ void DexWriter::WriteMapItems(Stream* stream, MapItemQueue* queue) { stream->Write(&map_list_size, sizeof(map_list_size)); while (!queue->empty()) { const MapItem& item = queue->top(); - DexFile::MapItem map_item; + dex::MapItem map_item; map_item.type_ = item.type_; map_item.size_ = item.size_; map_item.offset_ = item.offset_; diff --git a/dexlayout/dexlayout.h b/dexlayout/dexlayout.h index 6e006b7686..535f789f95 100644 --- a/dexlayout/dexlayout.h +++ b/dexlayout/dexlayout.h @@ -182,7 +182,7 @@ class DexLayout { std::string* error_msg); void DumpCFG(const DexFile* dex_file, int idx); - void DumpCFG(const DexFile* dex_file, uint32_t dex_method_idx, const DexFile::CodeItem* code); + void DumpCFG(const DexFile* dex_file, uint32_t dex_method_idx, const dex::CodeItem* code); Options& options_; ProfileCompilationInfo* info_; diff --git a/dexlayout/dexlayout_test.cc b/dexlayout/dexlayout_test.cc index 54157d9e3a..b68449ebbe 100644 --- a/dexlayout/dexlayout_test.cc +++ b/dexlayout/dexlayout_test.cc @@ -687,7 +687,7 @@ TEST_F(DexLayoutTest, CodeItemOverrun) { // Change the dex instructions to make an opcode that spans past the end of the code item. for (ClassAccessor accessor : dex->GetClasses()) { for (const ClassAccessor::Method& method : accessor.GetMethods()) { - DexFile::CodeItem* item = const_cast<DexFile::CodeItem*>(method.GetCodeItem()); + dex::CodeItem* item = const_cast<dex::CodeItem*>(method.GetCodeItem()); if (item != nullptr) { CodeItemInstructionAccessor instructions(*dex, item); if (instructions.begin() != instructions.end()) { @@ -793,7 +793,7 @@ TEST_F(DexLayoutTest, ClassFilter) { for (const std::unique_ptr<const DexFile>& dex_file : dex_files) { EXPECT_GT(dex_file->NumClassDefs(), 1u); for (uint32_t i = 0; i < dex_file->NumClassDefs(); ++i) { - const DexFile::ClassDef& class_def = dex_file->GetClassDef(i); + const dex::ClassDef& class_def = dex_file->GetClassDef(i); LOG(INFO) << dex_file->GetClassDescriptor(class_def); } Options options; @@ -828,7 +828,7 @@ TEST_F(DexLayoutTest, ClassFilter) { ASSERT_EQ(output_dex_file->NumClassDefs(), options.class_filter_.size()); for (uint32_t i = 0; i < output_dex_file->NumClassDefs(); ++i) { // Check that every class in the output dex file is in the filter. - const DexFile::ClassDef& class_def = output_dex_file->GetClassDef(i); + const dex::ClassDef& class_def = output_dex_file->GetClassDef(i); ASSERT_TRUE(options.class_filter_.find(output_dex_file->GetClassDescriptor(class_def)) != options.class_filter_.end()); } |
