From ea8d0bcb1c76fef8fde1c9c7f2ebfd2f4729d205 Mon Sep 17 00:00:00 2001 From: Justin Viiret Date: Tue, 14 Feb 2017 09:14:58 +1100 Subject: [PATCH] rose: build fragments directly --- src/rose/rose_build_bytecode.cpp | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) 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