Justin Viiret
ac858cd47c
rose: build a separate delay rebuild matcher
2017-04-26 14:46:48 +10:00
Justin Viiret
5706acf5c0
role aliasing: bail if new graph is not implementable
2017-04-26 14:46:46 +10:00
Alex Coyte
bbd64f98ae
allow streams to marked as exhausted in more cases
...
At stream boundaries, we can mark streams as exhausted if there are no
groups active and there are no other ways to report matches. This allows us
to stop maintaining the history buffer on subsequent stream writes.
Previously, streams were only marked as exhausted if a pure highlander case
reported all patterns or the outfix in a sole outfix case died.
2017-04-26 14:44:53 +10:00
Alex Coyte
c32d7d51d9
remove ng_rose
2017-04-26 14:44:49 +10:00
Alex Coyte
d89cf2f699
tidy
2017-04-26 14:44:29 +10:00
Alex Coyte
7767651b59
shift all early_dfa creation logic to ng_violet/ng_rose
2017-04-26 14:44:29 +10:00
Alex Coyte
9d35e2ad36
allow outfixes to be converted to prefixes of the eod event literal
2017-04-26 14:44:03 +10:00
Alex Coyte
512c049493
shift early_dfa construction earlier
2017-04-26 14:44:03 +10:00
Alex Coyte
caa46201f0
add information on the runtime impl to rose.txt
2017-04-26 14:44:03 +10:00
Justin Viiret
c6b2563df6
rose: delete literal_info requires_explode flag
2017-04-26 14:43:28 +10:00
Justin Viiret
f964801923
rose: explode mixed-case literals early
2017-04-26 14:43:28 +10:00
Justin Viiret
f307956584
rose: do not combine fragments which squash groups
2017-04-26 14:41:30 +10:00
Justin Viiret
c31c1c366e
filterLits: better debug output
2017-04-26 14:41:30 +10:00
Justin Viiret
988ea6b4e1
rose: role aliasing improvements
...
These changes improve the performance of the role aliasing passes on
very large cases and fix a couple of small errors in the left and right
merge passes as well.
2017-04-26 14:41:30 +10:00
Justin Viiret
1584da9025
rose: don't accel noodle engines
2017-04-26 14:41:29 +10:00
Justin Viiret
68a35ff3b8
rose: give longer literals to accel analysis
2017-04-26 14:41:29 +10:00
Justin Viiret
2fda8c0b20
hwlm: move accel from hwlm build to rose
2017-04-26 14:41:29 +10:00
Justin Viiret
abcac24b47
rose: add more program dump code
2017-04-26 14:41:29 +10:00
Justin Viiret
eb14792a63
rose: group final ids by fragment
2017-04-26 14:41:29 +10:00
Justin Viiret
07a6b6510c
rose/hwlm: limit literals to eight bytes
...
Rework HWLM to work over literals of eight bytes ("medium length"),
doing confirm in the Rose interpreter.
2017-04-26 14:41:29 +10:00
Justin Viiret
5c9c540424
rose: fix up comments referring to CHECK_LITERAL
...
This instruction is now called CHECK_LONG_LIT.
2017-04-26 14:41:29 +10:00
Justin Viiret
5061b76901
rose: mark RoseInstrCheckLongLit ctor explit
2017-04-26 14:41:29 +10:00
Justin Viiret
8f1b3c89fa
rose: remove no-longer-used convertBadLeaves pass
2017-04-26 14:41:29 +10:00
Matthew Barr
bc2f336d9d
Work around for deficiency in C++11/14/17 standard
...
As explained to us by STL at Microsoft (the author of their
vector), there is a hole in the standard wrt the vector copy
constructor, which always exists even if it won't compile.
2017-04-26 14:41:29 +10:00
Justin Viiret
68bdc800fc
dump: render literals as regexes (with comments)
2017-04-26 14:41:29 +10:00
Alex Coyte
f9324febde
Ensure the queue structure is initialised in roseEnginesEod().
2017-03-01 13:05:10 +11:00
Alex Coyte
734eb2ce62
we can only trim lookarounds based on information common to all literals
2017-01-17 11:39:17 +11:00
Matthew Barr
2214296b7f
Convert compile-time code to not require SIMD
2016-12-14 15:29:01 +11:00
Justin Viiret
e271781d95
multibit, fatbit: make _size build-time only
...
This commit makes mmbit_size() and fatbit_size compile-time only, and
adds a resource limit for very large multibits.
2016-12-14 15:28:54 +11:00
Alex Coyte
e51b6d23b9
introduce Sheng-McClellan hybrid
2016-12-14 15:27:18 +11:00
Justin Viiret
ef99ae108f
rose_build_merge: correctly merge NFA outfixes
...
We were not doing our bookkeeping properly for merges where the number
of NFAs was greater than the batch size of 200.
2016-12-02 11:34:52 +11:00
Matthew Barr
99e14df117
Fix combine2x128
2016-12-02 11:33:48 +11:00
Alex Coyte
8ff7a3cdbb
correct dump filenames of som rev engines
2016-12-02 11:33:44 +11:00
Alex Coyte
32c826e9c6
have single dump function per engine
2016-12-02 11:32:36 +11:00
Alex Coyte
71ff480b77
nfa_api: remove subtype from dispatch
2016-12-02 11:32:28 +11:00
Alex Coyte
530d84c6f3
allow edge_descriptors to be created from pair<edge_descriptor, bool>
2016-12-02 11:32:20 +11:00
Alex Coyte
e1e9010cac
Introduce custom adjacency-list based graph
2016-12-02 11:31:33 +11:00
Justin Viiret
29472c7b71
rose_dump: remove stray newline
2016-12-02 11:28:20 +11:00
Justin Viiret
91a7ce1cda
getData256(): data needs to be 32-byte aligned
2016-12-02 11:28:16 +11:00
Alex Coyte
47f53f63a7
simple pass to pick up paths redundant with those from cyclic's succs
2016-12-02 11:24:30 +11:00
Justin Viiret
8cadba0bdd
rose: call loadLongLiteralState() earlier
...
The ll_buf, ll_buf_nocase buffers must be initialised before anyh path
that could lead to storeLongLiteralState().
2016-12-02 11:23:14 +11:00
Justin Viiret
b9650d4fd0
rose: don't unconditionally init ll_buf etc
...
This is only necessary (and already always done) if there is a long
literal table.
2016-12-02 11:22:27 +11:00
Alex Coyte
592ce06eeb
Create combo tops for trigger limexes
2016-12-02 11:22:23 +11:00
Alex Coyte
445cf987a8
remove unused includes
2016-10-28 14:52:56 +11:00
Justin Viiret
8869dee643
rose: simplify long lit table, add bloom filter
...
Replaces the original long lit hash table (used in streaming mode) with a
smaller, simpler linear probing approach. Adds a bloom filter in front
of it to reduce time spent on false positives.
Sizing of both the hash table and bloom filter are done based on max
load.
2016-10-28 14:52:45 +11:00
Justin Viiret
68bf473e2e
fdr: move long literal handling into Rose
...
Move the hash table used for long literal support in streaming mode from
FDR to Rose, and introduce new instructions CHECK_LONG_LIT and
CHECK_LONG_LIT_NOCASE for doing literal confirm for long literals.
This simplifies FDR confirm, and guarantees that HWLM matchers will only
be used for literals < 256 bytes long.
2016-10-28 14:52:26 +11:00
Alex Coyte
648a3c4824
UE-3025: There is no need to prune tops from non-triggered graphs
2016-10-28 14:52:01 +11:00
Alex Coyte
c94899dd44
allow sets of tops on edges
2016-10-28 14:51:46 +11:00
Matthew Barr
707fe675ea
Operator precedence matters
2016-10-28 14:48:46 +11:00
Matthew Barr
7849b9d611
MSVC prefers the attrib at the beginning
2016-10-28 14:48:31 +11:00