Justin Viiret
09319940bf
roseFlushLastByteHistory: iter state on stack
2016-03-01 11:20:36 +11:00
Justin Viiret
b2a76e6e2b
roseCheckNfaEod: use sparse iterator for EOD
...
Rather than checking all active outfix/suffix engines, use a sparse
iterator to check only those engines that accept at EOD.
2016-03-01 11:20:26 +11:00
Justin Viiret
b6508811c0
writeEodProgram: avoid make_move_iterator warning
...
Avoid an ambiguity between std:: and boost::make_move_iterator on builds
against libc++.
2016-03-01 11:18:17 +11:00
Justin Viiret
b2ebdac642
rose: Extend program to handle literals, iterators
...
- cleanups
- add sparse iter instructions
- merge "root" and "sparse iter" programs together
- move program execution to new file program_runtime.h
- simplify EOD execution
2016-03-01 11:17:31 +11:00
Justin Viiret
db4176c13e
convertAnchPrefixToBounds: check size of delay_adj
...
Avoid subtracting delay_adj from a smaller max bound.
2016-03-01 11:16:29 +11:00
Justin Viiret
86a52971ca
Remove dead code: EdgeSourceStateCompare
2016-03-01 11:16:13 +11:00
Justin Viiret
d67c7583ea
rose: Extend the interpreter to handle more work
...
- Use program for EOD sparse iterator
- Use program for literal sparse iterator
- Eliminate RoseRole, RosePred, RoseVertexProps::role
- Small performance optimizations
2016-03-01 11:16:02 +11:00
Justin Viiret
9cb2233589
rose: Use an interpreter for role runtime
...
Replace much of the RoseRole structure with an interpreted program,
simplifying the Rose runtime and making it much more flexible.
2016-03-01 11:16:02 +11:00
Alex Coyte
a7d8dafb71
detach the sidecar
2016-03-01 11:13:23 +11:00
Alex Coyte
b9c5d65f0e
Rework literal overlap checks for merging engines
...
Also increase the size of chunks we consider merging for castles.
2016-03-01 11:10:24 +11:00
Alex Coyte
5e0d10d805
Allow lag on castle infixes to be reduced
...
Reducing lag allows for castles to be merged more effectively
2016-03-01 11:10:13 +11:00
Justin Viiret
8c09d054c9
Add per-top findMinWidth etc for NFA graphs
2015-12-07 09:38:32 +11:00
Justin Viiret
748d46c124
CastleProto: track next top explicitly
...
Repeats may be removed (e.g. by pruning in role aliasing passes)
leaving "holes" in the top map. Track the next top to use explicitly,
rather than using repeats.size().
2015-12-07 09:38:32 +11:00
Justin Viiret
da23e8306a
assignDkeys: use flat_set<ReportID>, not set
2015-12-07 09:38:32 +11:00
Justin Viiret
8dac64d1dc
findMinWidth, findMaxWidth: width for a given top
...
Currently only implemented for Castle suffixes.
2015-12-07 09:38:32 +11:00
Justin Viiret
03953f34b1
RoseDedupeAuxImpl: collect unique suffixes first
2015-12-07 09:38:32 +11:00
Justin Viiret
1267922ca7
role aliasing: simplify hashRightRoleProperties
...
Using the full report set for a suffix as an input to this hash was very
slow at scale.
2015-12-07 09:38:32 +11:00
Justin Viiret
abbd548899
ng_execute: update interface to use flat_set
...
This changes all the execute_graph() interfaces so that instead of
mutating a std::set of vertices, they accept an initial flat_set of
states and return a resultant flat_set of states after execution.
(Note that internally execute_graph() still uses bitsets)
This is both faster and more flexible.
2015-11-18 15:27:17 +11:00
Justin Viiret
2a2576e907
Introduce copy_bytes for writing into bytecode
...
Protects memcpy from nullptr sources, which triggers failures in GCC's
UB sanitizer.
2015-11-18 15:26:16 +11:00
Alex Coyte
1507b3fd36
move oversize graph check out of Automaton_holder ctor
2015-11-10 14:36:14 +11:00
Justin Viiret
c7bebf8836
RoseBuildImpl: init base_id members
...
These are set late in the Rose build process, when final IDs are
allocated.
2015-11-10 14:25:04 +11:00
Justin Viiret
cea914e18e
Add q_last_type() queue function
...
Analogous to q_cur_type(), asserts that queue indices are within a valid
range.
2015-11-10 14:25:04 +11:00
Justin Viiret
55b357f7d1
Remove enum mqe_event and use u32 for queue events
...
We were using intermediate values int he enum and casting back and forth
with a u32; it is cleaner to just use a u32 and define some special
values.
Silences ICC warning #188 : enumerated type mixed with another type.
2015-10-30 11:28:37 +11:00
Matthew Barr
904e436f11
Initial commit of Hyperscan
2015-10-20 09:13:35 +11:00