diff options
Diffstat (limited to 'openjdkjvmti/fixed_up_dex_file.cc')
-rw-r--r-- | openjdkjvmti/fixed_up_dex_file.cc | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/openjdkjvmti/fixed_up_dex_file.cc b/openjdkjvmti/fixed_up_dex_file.cc index a660fb56c4..fcbafe7e71 100644 --- a/openjdkjvmti/fixed_up_dex_file.cc +++ b/openjdkjvmti/fixed_up_dex_file.cc @@ -31,7 +31,6 @@ #include "base/leb128.h" #include "fixed_up_dex_file.h" -#include "dex/class_accessor-inl.h" #include "dex/dex_file-inl.h" #include "dex/dex_file_loader.h" #include "dex/dex_file_verifier.h" @@ -52,12 +51,14 @@ static void RecomputeDexChecksum(art::DexFile* dex_file) { } static void UnhideApis(const art::DexFile& target_dex_file) { - for (art::ClassAccessor accessor : target_dex_file.GetClasses()) { - for (const art::ClassAccessor::Field& field : accessor.GetFields()) { - field.UnHideAccessFlags(); - } - for (const art::ClassAccessor::Method& method : accessor.GetMethods()) { - method.UnHideAccessFlags(); + for (uint32_t i = 0; i < target_dex_file.NumClassDefs(); ++i) { + const uint8_t* class_data = target_dex_file.GetClassData(target_dex_file.GetClassDef(i)); + if (class_data != nullptr) { + for (art::ClassDataItemIterator class_it(target_dex_file, class_data); + class_it.HasNext(); + class_it.Next()) { + art::DexFile::UnHideAccessFlags(class_it); + } } } } |