Store OatDexFile instead of OatFile in DexFile.
This requires moving OatDexFile out of the OatFile class so that
a forward class declaration can be used for OatDexFile.
Bug: 19071355
Change-Id: Ibda85b78d0577e9e81073090616fc0f2fa526be3
diff --git a/runtime/dex_file.h b/runtime/dex_file.h
index da39573..8e2d6c2 100644
--- a/runtime/dex_file.h
+++ b/runtime/dex_file.h
@@ -44,7 +44,7 @@
} // namespace mirror
class ClassLinker;
class MemMap;
-class OatFile;
+class OatDexFile;
class Signature;
template<class T> class Handle;
class StringPiece;
@@ -392,9 +392,9 @@
static std::unique_ptr<const DexFile> Open(const uint8_t* base, size_t size,
const std::string& location,
uint32_t location_checksum,
- const OatFile* oat_file,
+ const OatDexFile* oat_dex_file,
std::string* error_msg) {
- return OpenMemory(base, size, location, location_checksum, NULL, oat_file, error_msg);
+ return OpenMemory(base, size, location, location_checksum, NULL, oat_dex_file, error_msg);
}
// Open all classesXXX.dex files from a zip archive.
@@ -904,8 +904,8 @@
// the dex_location where it's file name part has been made canonical.
static std::string GetDexCanonicalLocation(const char* dex_location);
- const OatFile* GetOatFile() const {
- return oat_file_;
+ const OatDexFile* GetOatDexFile() const {
+ return oat_dex_file_;
}
private:
@@ -944,14 +944,14 @@
const std::string& location,
uint32_t location_checksum,
MemMap* mem_map,
- const OatFile* oat_file,
+ const OatDexFile* oat_dex_file,
std::string* error_msg);
DexFile(const uint8_t* base, size_t size,
const std::string& location,
uint32_t location_checksum,
MemMap* mem_map,
- const OatFile* oat_file);
+ const OatDexFile* oat_dex_file);
// Top-level initializer that calls other Init methods.
bool Init(std::string* error_msg);
@@ -1035,9 +1035,10 @@
typedef HashMap<const char*, const ClassDef*, UTF16EmptyFn, UTF16HashCmp, UTF16HashCmp> Index;
mutable Atomic<Index*> class_def_index_;
- // The oat file this dex file was loaded from. May be null in case the dex file is not coming
- // from an oat file, e.g., directly from an apk.
- const OatFile* oat_file_;
+ // If this dex file was loaded from an oat file, oat_dex_file_ contains a
+ // pointer to the OatDexFile it was loaded from. Otherwise oat_dex_file_ is
+ // null.
+ const OatDexFile* oat_dex_file_;
};
struct DexFileReference {