mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-06-28 16:41:01 +03:00
move final_to_frag_map into RoseBuildImpl (for dump code)
This commit is contained in:
parent
cfa63a7096
commit
3ae2fb417e
@ -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);
|
||||
|
||||
|
@ -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));
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user