Deterministic VerifierDeps::Dump().
This makes is easier to diff oatdump output.
Test: m dump-oat-boot && \
grep 'Dependencies of ' out/soong/boot.arm.oatdump.txt
(framework.jar dex files are ordered properly.)
Change-Id: I55f14950f00e4c3cbdda53ec513837d11ade026e
diff --git a/runtime/verifier/verifier_deps.cc b/runtime/verifier/verifier_deps.cc
index ed5488c..219627f 100644
--- a/runtime/verifier/verifier_deps.cc
+++ b/runtime/verifier/verifier_deps.cc
@@ -830,7 +830,20 @@
}
void VerifierDeps::Dump(VariableIndentationOutputStream* vios) const {
+ // Sort dex files by their location to ensure deterministic ordering.
+ using DepsEntry = std::pair<const DexFile*, const DexFileDeps*>;
+ std::vector<DepsEntry> dex_deps;
+ dex_deps.reserve(dex_deps_.size());
for (const auto& dep : dex_deps_) {
+ dex_deps.emplace_back(dep.first, dep.second.get());
+ }
+ std::sort(
+ dex_deps.begin(),
+ dex_deps.end(),
+ [](const DepsEntry& lhs, const DepsEntry& rhs) {
+ return lhs.first->GetLocation() < rhs.first->GetLocation();
+ });
+ for (const auto& dep : dex_deps) {
const DexFile& dex_file = *dep.first;
vios->Stream()
<< "Dependencies of "