move final_to_frag_map into RoseBuildImpl (for dump code)

This commit is contained in:
Justin Viiret 2017-01-31 10:22:23 +11:00 committed by Matthew Barr
parent cfa63a7096
commit 3ae2fb417e
3 changed files with 20 additions and 19 deletions

View File

@ -5414,7 +5414,7 @@ aligned_unique_ptr<RoseEngine> RoseBuildImpl::buildFinalEngine(u32 minWidth) {
DEBUG_PRINTF("longLitLengthThreshold=%zu\n", longLitLengthThreshold);
allocateFinalLiteralId(*this);
auto final_to_frag_map = groupByFragment(*this);
final_to_frag_map = groupByFragment(*this);
auto anchored_dfas = buildAnchoredDfas(*this);

View File

@ -505,28 +505,27 @@ void dumpRoseTestLiterals(const RoseBuildImpl &build, const string &base) {
size_t longLitLengthThreshold =
calcLongLitThreshold(build, historyRequired);
const auto final_to_frag_map = groupByFragment(build);
auto mp = makeMatcherProto(build, final_to_frag_map, ROSE_ANCHORED, false,
longLitLengthThreshold);
auto mp = makeMatcherProto(build, build.final_to_frag_map, ROSE_ANCHORED,
false, longLitLengthThreshold);
dumpTestLiterals(base + "rose_anchored_test_literals.txt", mp.lits);
mp = makeMatcherProto(build, final_to_frag_map, ROSE_FLOATING, false,
mp = makeMatcherProto(build, build.final_to_frag_map, ROSE_FLOATING, false,
longLitLengthThreshold);
dumpTestLiterals(base + "rose_float_test_literals.txt", mp.lits);
mp = makeMatcherProto(build, final_to_frag_map, ROSE_FLOATING, true,
mp = makeMatcherProto(build, build.final_to_frag_map, ROSE_FLOATING, true,
longLitLengthThreshold);
dumpTestLiterals(base + "rose_delay_rebuild_test_literals.txt", mp.lits);
mp = makeMatcherProto(build, final_to_frag_map, ROSE_EOD_ANCHORED, false,
build.ematcher_region_size);
mp = makeMatcherProto(build, build.final_to_frag_map, ROSE_EOD_ANCHORED,
false, build.ematcher_region_size);
dumpTestLiterals(base + "rose_eod_test_literals.txt", mp.lits);
if (!build.cc.streaming) {
mp = makeMatcherProto(build, final_to_frag_map, ROSE_FLOATING, false,
ROSE_SMALL_BLOCK_LEN, ROSE_SMALL_BLOCK_LEN);
auto mp2 = makeMatcherProto(build, final_to_frag_map,
mp =
makeMatcherProto(build, build.final_to_frag_map, ROSE_FLOATING,
false, ROSE_SMALL_BLOCK_LEN, ROSE_SMALL_BLOCK_LEN);
auto mp2 = makeMatcherProto(build, build.final_to_frag_map,
ROSE_ANCHORED_SMALL_BLOCK, false,
ROSE_SMALL_BLOCK_LEN, ROSE_SMALL_BLOCK_LEN);
mp.lits.insert(end(mp.lits), begin(mp2.lits), end(mp2.lits));

View File

@ -436,6 +436,13 @@ private:
std::set<ReportID> all_reports(const OutfixInfo &outfix);
struct LitFragment {
explicit LitFragment(u32 fragment_id_in) : fragment_id(fragment_id_in) {}
u32 fragment_id;
u32 lit_program_offset = 0;
u32 delay_program_offset = 0;
};
// Concrete impl class
class RoseBuildImpl : public RoseBuild {
public:
@ -587,6 +594,8 @@ public:
std::map<u32, std::set<u32> > final_id_to_literal; /* final literal id to
* literal id */
std::map<u32, LitFragment> final_to_frag_map;
unordered_set<left_id> transient;
unordered_map<left_id, rose_group> rose_squash_masks;
@ -642,13 +651,6 @@ void normaliseLiteralMask(const ue2_literal &s, std::vector<u8> &msk,
bool canImplementGraphs(const RoseBuildImpl &tbi);
#endif
struct LitFragment {
explicit LitFragment(u32 fragment_id_in) : fragment_id(fragment_id_in) {}
u32 fragment_id;
u32 lit_program_offset = 0;
u32 delay_program_offset = 0;
};
std::map<u32, LitFragment> groupByFragment(const RoseBuildImpl &build);
} // namespace ue2