diff options
Diffstat (limited to 'dexlayout/dex_ir_builder.cc')
-rw-r--r-- | dexlayout/dex_ir_builder.cc | 49 |
1 files changed, 3 insertions, 46 deletions
diff --git a/dexlayout/dex_ir_builder.cc b/dexlayout/dex_ir_builder.cc index c38e563f18..947d3d5297 100644 --- a/dexlayout/dex_ir_builder.cc +++ b/dexlayout/dex_ir_builder.cc @@ -170,7 +170,6 @@ class BuilderMaps { void AddAnnotationsFromMapListSection(const DexFile& dex_file, uint32_t start_offset, uint32_t count); - void AddHiddenapiClassDataFromMapListSection(const DexFile& dex_file, uint32_t offset); void CheckAndSetRemainingOffsets(const DexFile& dex_file, const Options& options); @@ -409,10 +408,6 @@ void BuilderMaps::CheckAndSetRemainingOffsets(const DexFile& dex_file, const Opt case DexFile::kDexTypeAnnotationsDirectoryItem: header_->AnnotationsDirectoryItems().SetOffset(item->offset_); break; - case DexFile::kDexTypeHiddenapiClassData: - header_->HiddenapiClassDatas().SetOffset(item->offset_); - AddHiddenapiClassDataFromMapListSection(dex_file, item->offset_); - break; default: LOG(ERROR) << "Unknown map list item type."; } @@ -629,44 +624,6 @@ void BuilderMaps::AddAnnotationsFromMapListSection(const DexFile& dex_file, } } -void BuilderMaps::AddHiddenapiClassDataFromMapListSection(const DexFile& dex_file, - uint32_t offset) { - const DexFile::HiddenapiClassData* hiddenapi_class_data = - dex_file.GetHiddenapiClassDataAtOffset(offset); - DCHECK(hiddenapi_class_data == dex_file.GetHiddenapiClassData()); - - for (size_t i = 0; i < dex_file.NumClassDefs(); ++i) { - ClassDef* class_def = header_->ClassDefs()[i]; - ClassData* class_data = class_def->GetClassData(); - const uint8_t* ptr = hiddenapi_class_data->GetFlagsPointer(i); - - std::unique_ptr<HiddenapiFlagsMap> flags = nullptr; - if (ptr != nullptr) { - DCHECK(class_data != nullptr); - flags = std::make_unique<HiddenapiFlagsMap>(); - for (const dex_ir::FieldItem& field : *class_data->StaticFields()) { - flags->emplace(&field, DecodeUnsignedLeb128(&ptr)); - } - for (const dex_ir::FieldItem& field : *class_data->InstanceFields()) { - flags->emplace(&field, DecodeUnsignedLeb128(&ptr)); - } - for (const dex_ir::MethodItem& method : *class_data->DirectMethods()) { - flags->emplace(&method, DecodeUnsignedLeb128(&ptr)); - } - for (const dex_ir::MethodItem& method : *class_data->VirtualMethods()) { - flags->emplace(&method, DecodeUnsignedLeb128(&ptr)); - } - } - - CreateAndAddIndexedItem(header_->HiddenapiClassDatas(), - header_->HiddenapiClassDatas().GetOffset() + - hiddenapi_class_data->flags_offset_[i], - i, - class_def, - std::move(flags)); - } -} - AnnotationItem* BuilderMaps::CreateAnnotationItem(const DexFile& dex_file, const DexFile::AnnotationItem* annotation) { const uint8_t* const start_data = reinterpret_cast<const uint8_t*>(annotation); @@ -951,13 +908,13 @@ ClassData* BuilderMaps::CreateClassData(const DexFile& dex_file, FieldItemVector* static_fields = new FieldItemVector(); for (const ClassAccessor::Field& field : accessor.GetStaticFields()) { FieldId* field_item = header_->FieldIds()[field.GetIndex()]; - uint32_t access_flags = field.GetAccessFlags(); + uint32_t access_flags = field.GetRawAccessFlags(); static_fields->emplace_back(access_flags, field_item); } FieldItemVector* instance_fields = new FieldItemVector(); for (const ClassAccessor::Field& field : accessor.GetInstanceFields()) { FieldId* field_item = header_->FieldIds()[field.GetIndex()]; - uint32_t access_flags = field.GetAccessFlags(); + uint32_t access_flags = field.GetRawAccessFlags(); instance_fields->emplace_back(access_flags, field_item); } // Direct methods. @@ -1223,7 +1180,7 @@ void BuilderMaps::ReadEncodedValue(const DexFile& dex_file, MethodItem BuilderMaps::GenerateMethodItem(const DexFile& dex_file, const ClassAccessor::Method& method) { MethodId* method_id = header_->MethodIds()[method.GetIndex()]; - uint32_t access_flags = method.GetAccessFlags(); + uint32_t access_flags = method.GetRawAccessFlags(); const DexFile::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. |