From 55dc7bbffc9be5bb43b98d930d6b4c40c19e8c00 Mon Sep 17 00:00:00 2001 From: Mark Williams Date: Wed, 6 Nov 2019 08:29:18 -0800 Subject: [PATCH] Make alias-analysis TRACEs deterministic Summary: They were relying on the iteration order of an unordered map, resulting in random changes to the trace output. Reviewed By: ricklavoie Differential Revision: D18337482 fbshipit-source-id: 3714184dba0277c81b8a420a730b22e0a7779d2a --- hphp/runtime/vm/jit/alias-analysis.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/hphp/runtime/vm/jit/alias-analysis.cpp b/hphp/runtime/vm/jit/alias-analysis.cpp index cf848f6544e..4d68a57d7c1 100644 --- a/hphp/runtime/vm/jit/alias-analysis.cpp +++ b/hphp/runtime/vm/jit/alias-analysis.cpp @@ -613,18 +613,25 @@ std::string show(const AliasAnalysis& ainfo) { "all frame", show(ainfo.all_frame), "all rds", show(ainfo.all_rds) ); + std::vector tmp; for (auto& kv : ainfo.loc_expand_map) { - folly::format(&ret, " ex {: <17} : {}\n", - show(kv.first), - show(kv.second)); + tmp.push_back(folly::sformat(" ex {: <17} : {}\n", + show(kv.first), + show(kv.second))); } + std::sort(tmp.begin(), tmp.end()); + for (auto& s : tmp) ret += s; + tmp.clear(); folly::format(&ret, " {: <20} : {}\n", "all stack", show(ainfo.all_stack)); for (auto& kv : ainfo.stack_ranges) { - folly::format(&ret, " ex {: <17} : {}\n", - show(kv.first), - show(kv.second)); + tmp.push_back(folly::sformat(" ex {: <17} : {}\n", + show(kv.first), + show(kv.second))); } + std::sort(tmp.begin(), tmp.end()); + for (auto& s : tmp) ret += s; + tmp.clear(); return ret; } -- 2.11.4.GIT