From: Justin Viiret Date: Mon, 13 Feb 2017 22:14:58 +0000 (+1100) Subject: rose: build fragments directly X-Git-Tag: v4.5.0^2~238 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ea8d0bcb1c76fef8fde1c9c7f2ebfd2f4729d205;p=thirdparty%2Fvectorscan.git rose: build fragments directly --- diff --git a/src/rose/rose_build_bytecode.cpp b/src/rose/rose_build_bytecode.cpp index 03bba972..da0195e9 100644 --- a/src/rose/rose_build_bytecode.cpp +++ b/src/rose/rose_build_bytecode.cpp @@ -4722,31 +4722,18 @@ void buildLiteralPrograms(RoseBuildImpl &build, build_context &bc) { frag_to_final_map[m.second].insert(m.first); } - const u32 num_fragments = verify_u32(frag_to_final_map.size()); - DEBUG_PRINTF("%u fragments\n", num_fragments); - + DEBUG_PRINTF("%zu fragments\n", build.fragments.size()); auto lit_edge_map = findEdgesByLiteral(build); - vector litPrograms(num_fragments); - vector delayRebuildPrograms(num_fragments); - - for (u32 frag_id = 0; frag_id != num_fragments; ++frag_id) { - const auto &final_ids = frag_to_final_map[frag_id]; - DEBUG_PRINTF("frag_id=%u, final_ids=[%s]\n", frag_id, + for (auto &frag : build.fragments) { + const auto &final_ids = frag_to_final_map[frag.fragment_id]; + DEBUG_PRINTF("frag_id=%u, final_ids=[%s]\n", frag.fragment_id, as_string_list(final_ids).c_str()); - - litPrograms[frag_id] = + frag.lit_program_offset = writeLiteralProgram(build, bc, final_ids, lit_edge_map); - delayRebuildPrograms[frag_id] = + frag.delay_program_offset = buildDelayRebuildProgram(build, bc, final_ids); } - - // Update LitFragment entries. - for (const auto &fragment_id : build.final_to_frag_map | map_values) { - auto &frag = build.fragments.at(fragment_id); - frag.lit_program_offset = litPrograms[frag.fragment_id]; - frag.delay_program_offset = delayRebuildPrograms[frag.fragment_id]; - } } static