From 24ffb156e9766722d48cd7e7c38519b715ea4063 Mon Sep 17 00:00:00 2001 From: Justin Viiret Date: Wed, 22 Feb 2017 10:28:40 +1100 Subject: [PATCH] rose: eliminate global final to fragment map --- src/rose/rose_build_bytecode.cpp | 9 ++++++--- src/rose/rose_build_impl.h | 1 - 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/rose/rose_build_bytecode.cpp b/src/rose/rose_build_bytecode.cpp index 36f7707d..c17c8b86 100644 --- a/src/rose/rose_build_bytecode.cpp +++ b/src/rose/rose_build_bytecode.cpp @@ -4675,8 +4675,8 @@ void groupByFragment(RoseBuildImpl &build, const build_context &bc) { }; map frag_info; + map final_to_frag; - auto &final_to_frag = build.final_to_frag_map; auto &fragments = build.fragments; for (const auto &m : bc.final_id_to_literal) { @@ -4747,8 +4747,11 @@ static void buildLiteralPrograms(RoseBuildImpl &build, build_context &bc) { // Build a reverse mapping from fragment -> final_id. map> frag_to_final_map; - for (const auto &m : build.final_to_frag_map) { - frag_to_final_map[m.second].insert(m.first); + for (const auto &info : build.literal_info) { + if (info.fragment_id == MO_INVALID_IDX) { + continue; + } + frag_to_final_map[info.fragment_id].insert(info.final_id); } DEBUG_PRINTF("%zu fragments\n", build.fragments.size()); diff --git a/src/rose/rose_build_impl.h b/src/rose/rose_build_impl.h index b7bf4f19..860404b4 100644 --- a/src/rose/rose_build_impl.h +++ b/src/rose/rose_build_impl.h @@ -590,7 +590,6 @@ public: * overlap calculation in history assignment. */ std::map anchoredLitSuffix; - std::map final_to_frag_map; std::vector fragments; unordered_set transient;