]> git.ipfire.org Git - thirdparty/vectorscan.git/commitdiff
move final_to_frag_map into RoseBuildImpl (for dump code)
authorJustin Viiret <justin.viiret@intel.com>
Mon, 30 Jan 2017 23:22:23 +0000 (10:22 +1100)
committerMatthew Barr <matthew.barr@intel.com>
Wed, 26 Apr 2017 04:46:49 +0000 (14:46 +1000)
src/rose/rose_build_bytecode.cpp
src/rose/rose_build_dump.cpp
src/rose/rose_build_impl.h

index 92e9aa59f63c3c5e8ebbdbae87dcce62cb247c82..51d8da97135dda946f215ac0f3845a333e28ef89 100644 (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);
 
index abd3462971e6a516c5cd280e3045d5e0e1f3bce6..2b19e1975312ced95103601fb24ac875fe3811e3 100644 (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));
index e615d42ba7a61fc4bdcfbb65a9494b90a0de746e..e9ba5f5550016538456be1c90630d99211dbcdeb 100644 (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