mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-11-18 18:20:35 +03:00
limex: rework accept handling
Rather that iterating over NFAAccept structures and testing individual bits in the state structure, iterate over the state vector and index into accept structures. Adds report list support to this path, unified with the report lists used for exception handling.
This commit is contained in:
committed by
Matthew Barr
parent
3dcfea19e0
commit
77fe1ef6e5
@@ -73,8 +73,7 @@
|
||||
static really_inline
|
||||
int processExceptional32(u32 s, u32 estate, UNUSED u32 diffmask, u32 *succ,
|
||||
const struct LimExNFA32 *limex,
|
||||
const struct NFAException32 *exceptions,
|
||||
const ReportID *exReports, u64a offset,
|
||||
const struct NFAException32 *exceptions, u64a offset,
|
||||
struct NFAContext32 *ctx, char in_rev, char flags) {
|
||||
assert(estate != 0); // guaranteed by calling macro
|
||||
|
||||
@@ -104,8 +103,8 @@ int processExceptional32(u32 s, u32 estate, UNUSED u32 diffmask, u32 *succ,
|
||||
u32 bit = findAndClearLSB_32(&estate);
|
||||
u32 idx = rank_in_mask32(limex->exceptionMask, bit);
|
||||
const struct NFAException32 *e = &exceptions[idx];
|
||||
if (!runException32(e, s, succ, &local_succ, limex, exReports, offset,
|
||||
ctx, &new_cache, &cacheable, in_rev, flags)) {
|
||||
if (!runException32(e, s, succ, &local_succ, limex, offset, ctx,
|
||||
&new_cache, &cacheable, in_rev, flags)) {
|
||||
return PE_RV_HALT;
|
||||
}
|
||||
} while (estate != 0);
|
||||
|
||||
Reference in New Issue
Block a user