mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-11-18 18:20:35 +03:00
rose: use program offsets directly in lit tables
This commit is contained in:
committed by
Matthew Barr
parent
ac858cd47c
commit
76f72b6ab4
@@ -208,8 +208,8 @@ void remapAnchoredReports(RoseBuildImpl &build) {
|
||||
* raw_dfa with program offsets.
|
||||
*/
|
||||
static
|
||||
void remapIdsToPrograms(raw_dfa &rdfa, const vector<u32> &litPrograms,
|
||||
const map<u32, u32> &final_to_frag_map) {
|
||||
void remapIdsToPrograms(raw_dfa &rdfa,
|
||||
const map<u32, LitFragment> &final_to_frag_map) {
|
||||
for (dstate &ds : rdfa.states) {
|
||||
assert(ds.reports_eod.empty()); // Not used in anchored matcher.
|
||||
if (ds.reports.empty()) {
|
||||
@@ -219,9 +219,8 @@ void remapIdsToPrograms(raw_dfa &rdfa, const vector<u32> &litPrograms,
|
||||
flat_set<ReportID> new_reports;
|
||||
for (auto final_id : ds.reports) {
|
||||
assert(contains(final_to_frag_map, final_id));
|
||||
auto frag_id = final_to_frag_map.at(final_id);
|
||||
assert(frag_id < litPrograms.size());
|
||||
new_reports.insert(litPrograms.at(frag_id));
|
||||
auto &frag = final_to_frag_map.at(final_id);
|
||||
new_reports.insert(frag.lit_program_offset);
|
||||
}
|
||||
ds.reports = move(new_reports);
|
||||
}
|
||||
@@ -849,8 +848,8 @@ vector<raw_dfa> buildAnchoredDfas(RoseBuildImpl &build) {
|
||||
|
||||
aligned_unique_ptr<anchored_matcher_info>
|
||||
buildAnchoredMatcher(RoseBuildImpl &build, vector<raw_dfa> &dfas,
|
||||
const vector<u32> &litPrograms,
|
||||
const map<u32, u32> &final_to_frag_map, size_t *asize) {
|
||||
const map<u32, LitFragment> &final_to_frag_map,
|
||||
size_t *asize) {
|
||||
const CompileContext &cc = build.cc;
|
||||
|
||||
if (dfas.empty()) {
|
||||
@@ -860,7 +859,7 @@ buildAnchoredMatcher(RoseBuildImpl &build, vector<raw_dfa> &dfas,
|
||||
}
|
||||
|
||||
for (auto &rdfa : dfas) {
|
||||
remapIdsToPrograms(rdfa, litPrograms, final_to_frag_map);
|
||||
remapIdsToPrograms(rdfa, final_to_frag_map);
|
||||
}
|
||||
|
||||
vector<aligned_unique_ptr<NFA>> nfas;
|
||||
|
||||
Reference in New Issue
Block a user