mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-06-28 16:41:01 +03:00
rose_build_matchers: simplify literal build
This commit is contained in:
parent
bcbd85ab67
commit
6c5b4e657c
@ -671,8 +671,6 @@ MatcherProto makeMatcherProto(const RoseBuildImpl &build,
|
||||
|
||||
assert(id < build.literal_info.size());
|
||||
const rose_literal_info &info = build.literal_info[id];
|
||||
u32 final_id = info.final_id;
|
||||
rose_group groups = info.group_mask;
|
||||
/* Note: requires_benefits are handled in the literal entries */
|
||||
const ue2_literal &lit = e.second.s;
|
||||
|
||||
@ -723,8 +721,8 @@ MatcherProto makeMatcherProto(const RoseBuildImpl &build,
|
||||
|
||||
DEBUG_PRINTF("id=%u, s='%s', nocase=%d, noruns=%d, msk=%s, "
|
||||
"cmp=%s\n",
|
||||
final_id, escapeString(s).c_str(), (int)nocase, noruns,
|
||||
dumpMask(msk).c_str(), dumpMask(cmp).c_str());
|
||||
info.fragment_id, escapeString(s).c_str(), (int)nocase,
|
||||
noruns, dumpMask(msk).c_str(), dumpMask(cmp).c_str());
|
||||
|
||||
if (!maskIsConsistent(s, nocase, msk, cmp)) {
|
||||
DEBUG_PRINTF("msk/cmp for literal can't match, skipping\n");
|
||||
@ -732,20 +730,17 @@ MatcherProto makeMatcherProto(const RoseBuildImpl &build,
|
||||
}
|
||||
|
||||
mp.accel_lits.emplace_back(lit.get_string(), lit.any_nocase(), msk, cmp,
|
||||
groups);
|
||||
info.group_mask);
|
||||
mp.history_required = max(mp.history_required, lit_hist_len);
|
||||
mp.lits.emplace_back(move(s), nocase, noruns, final_id, groups, msk,
|
||||
cmp);
|
||||
}
|
||||
|
||||
for (auto &lit : mp.lits) {
|
||||
u32 final_id = lit.id;
|
||||
assert(contains(build.final_to_frag_map, final_id));
|
||||
const auto &frag =
|
||||
build.fragments.at(build.final_to_frag_map.at(final_id));
|
||||
lit.id = delay_rebuild ? frag.delay_program_offset
|
||||
: frag.lit_program_offset;
|
||||
lit.groups = frag.groups;
|
||||
assert(info.fragment_id < build.fragments.size());
|
||||
const auto &frag = build.fragments.at(info.fragment_id);
|
||||
u32 prog_offset =
|
||||
delay_rebuild ? frag.delay_program_offset : frag.lit_program_offset;
|
||||
const auto &groups = frag.groups;
|
||||
|
||||
mp.lits.emplace_back(move(s), nocase, noruns, prog_offset, groups, msk,
|
||||
cmp);
|
||||
}
|
||||
|
||||
sort_and_unique(mp.lits);
|
||||
|
Loading…
x
Reference in New Issue
Block a user