569 Commits

Author SHA1 Message Date
Justin Viiret
cf9e40ae1c nfa: unify NfaCallback and SomNfaCallback
Use just one callback type, with both start and end offsets.
2016-07-08 11:01:56 +10:00
Xiang Wang
9087d59be5 tamarama: add container engine for exclusive nfas
Add the new Tamarama engine that acts as a container for infix/suffix
engines that can be proven to run exclusively of one another.

This reduces stream state for pattern sets with many exclusive engines.
2016-07-08 11:01:34 +10:00
Justin Viiret
013dbd3b3c rose: re-inline literal handling program exec 2016-07-08 11:01:34 +10:00
Justin Viiret
76d96809f8 rose: move roseRunProgram into its own unit
The roseRunProgram function had gotten very large for the number of
sites it was being inlined into, with negative effects on performance in
large cases. This change moves it into its own translation unit.
2016-07-08 11:01:34 +10:00
Alex Coyte
f166bc5658 allow some prefixes that may squash the literal match to run eagerly 2016-07-08 11:01:34 +10:00
Matthew Barr
f9ded59361 Disable strict aliasing
Strict aliasing allows to compiler to make some optimisations, but they aren't
without risk. The benefits do not appear to be worth the risk.
2016-07-08 10:59:40 +10:00
Alex Coyte
8699e35c09 prevent merging the e and f tables if the ftable is squashable 2016-07-08 10:59:40 +10:00
Alex Coyte
575e8c06dc only show floating groups to the floating table 2016-07-08 10:59:40 +10:00
Justin Viiret
1c2b0a271d role aliasing: tidy up naming 2016-07-08 10:59:40 +10:00
Justin Viiret
1d18852dc9 role aliasing: unify map update code 2016-07-08 10:59:40 +10:00
Justin Viiret
6239805561 rose: don't build empty sparse iter subprograms 2016-07-08 10:59:40 +10:00
Justin Viiret
679042779a role aliasing: use a reverse ghost map 2016-07-08 10:59:40 +10:00
Justin Viiret
1e5fcd5e80 tighten ghost vertex checks 2016-07-08 10:59:40 +10:00
Justin Viiret
0749f7c06d rose: allow ghosts to be aliased 2016-07-08 10:59:40 +10:00
Justin Viiret
e915ca21c5 limex: tidy up scoring code 2016-07-08 10:57:29 +10:00
Justin Viiret
8648397257 limex: invert scoring to count up from zero 2016-07-08 10:57:29 +10:00
Kirill Rybalchenko
9d2403e8bb limex: implement variable shift NFA engines
Replaces the old LimEx NFA engines, which were specialised for model
size and number of shifts, with a new set of engines that can handle a
variable number of shifts.
2016-07-08 10:57:29 +10:00
Justin Viiret
cdaf705a87 rose: pick up more prefix->lookaround conversions 2016-07-08 10:57:29 +10:00
Justin Viiret
d3c56b532b rose build: dedupe hasLastByteHistorySucc func 2016-07-08 10:57:00 +10:00
Justin Viiret
cf8e8c90ff eod: move stream eod code to stream.c 2016-07-08 10:55:36 +10:00
Justin Viiret
d5c1280b9f eod: tidy up, rename to roseStreamEodExec 2016-07-08 10:55:36 +10:00
Justin Viiret
66e0b77aa4 block: unify roseBlockExec and roseBlockExec_i 2016-07-08 10:55:36 +10:00
Justin Viiret
513ac11dbc block: move matcher invocations into functions 2016-07-08 10:55:36 +10:00
Justin Viiret
a9eba12cce rose: inline block-mode eod check 2016-07-08 10:55:36 +10:00
Justin Viiret
159c09b70e roseEnginesEod: trust the queue structure 2016-07-08 10:55:36 +10:00
Justin Viiret
d9bd6d5dee roseSuffixesEod: trust the queue structure 2016-07-08 10:55:36 +10:00
Justin Viiret
3e0232f0d6 eod: retire getELiteralMatcher 2016-07-08 10:55:36 +10:00
Justin Viiret
426bfc9cfb rose_build_bytecode: clean up 2016-07-08 10:55:36 +10:00
Justin Viiret
ae157034e9 eod: tidy runtime 2016-07-08 10:55:36 +10:00
Justin Viiret
78e4332a8b move eod iter program into general eod program 2016-07-08 10:55:36 +10:00
Justin Viiret
39461cc806 eod: move hwlm execution into MATCHER_EOD instr 2016-07-08 10:55:36 +10:00
Justin Viiret
b8f771e824 rose_build_bytecode: tidy up addPredBlocks 2016-07-08 10:55:36 +10:00
Justin Viiret
2761e0105d eod: more suffix iteration into program 2016-07-08 10:54:07 +10:00
Justin Viiret
9669e0fe94 eod: remove forced sparse iter optimization 2016-07-08 10:54:07 +10:00
Justin Viiret
7a7dff5b70 eod: don't force sparse iter for general prog 2016-07-08 10:54:07 +10:00
Justin Viiret
02595cda1f eod: consolidate eod anchor programs 2016-07-08 10:54:07 +10:00
Justin Viiret
7a6a476723 eod: move engine checks into ENGINES_EOD instr 2016-07-08 10:54:07 +10:00
Justin Viiret
7e3d56579b eod: stop passing both scratch and state around 2016-07-08 10:54:07 +10:00
Matthew Barr
c7212a7478 Only omit frame pointers on 32bit release builds
Frame pointers are very useful for debugging and testing, and only
really make a difference to performance on IA32.
2016-07-08 10:50:08 +10:00
Justin Viiret
08d44fbed5 fdr: remove unused typedef 'ConfirmIndex' 2016-07-08 10:50:03 +10:00
Justin Viiret
ad74f3b895 fdr: use braced init syntax for pairs 2016-07-08 10:49:59 +10:00
Justin Viiret
b8cd169cde teddy compile: rename loop var for readability 2016-07-08 10:49:56 +10:00
Justin Viiret
bae7a072ca TeddySet: doesn't need a reference to lits 2016-07-08 10:49:52 +10:00
Justin Viiret
d626cb68e0 fdr_confirm_compile: clean up debugging code 2016-07-08 10:49:48 +10:00
Justin Viiret
37e7c96424 teddy_compile: modernise 2016-07-08 10:49:45 +10:00
Justin Viiret
88e6485e75 fdr_compile: tidy up 2016-07-08 10:49:42 +10:00
Justin Viiret
466fc940e5 fdr_streaming_compile: modernise loops, etc 2016-07-08 10:49:38 +10:00
Justin Viiret
57cd2331f5 fdr/teddy: switch over remaining smart ptrs 2016-07-08 10:49:35 +10:00
Justin Viiret
aebbd4f169 setupFullMultiConfs: return smart ptr 2016-07-08 10:49:31 +10:00
Justin Viiret
9953a026f8 setupFDRFloodControl: return smart ptr 2016-07-08 10:49:27 +10:00