Justin Viiret
6013fb1546
engine_blob: add_range() member function
2017-04-26 15:11:10 +10:00
Justin Viiret
10aa806d67
rose: clean up nfa state alloc
2017-04-26 15:11:10 +10:00
Justin Viiret
246f9f4f86
rose: update nfa info earlier, in engine blob
2017-04-26 15:11:10 +10:00
Justin Viiret
a0b0247e47
rose: move NfaInfo to engine blob
2017-04-26 15:11:10 +10:00
Justin Viiret
c619621573
rose: move leftfix info into engine blob, refactor
2017-04-26 15:11:10 +10:00
Justin Viiret
395d6ae650
rose: move dkey info to engine blob
2017-04-26 15:11:10 +10:00
Justin Viiret
e3d2d67833
rose: move lookaround tables to engine blob
2017-04-26 15:11:10 +10:00
Justin Viiret
b6254ca11f
rose: move active leftfix iter to engine blob
2017-04-26 15:11:10 +10:00
Justin Viiret
282f72e04d
rose: move SOM reverse NFAs to engine_blob
2017-04-26 15:11:10 +10:00
Justin Viiret
f4bda9def6
rose: build RoseEngine prototype for bytecode
...
Rather than tracking a great many offsets in u32 variables, build them
in a RoseEngine prototype.
2017-04-26 15:11:10 +10:00
Justin Viiret
7b5c4c85cc
rose: create new ProgramBuild struct
2017-04-26 15:04:31 +10:00
Justin Viiret
78875614c8
rose: make buildLiteralProgram take one lit_id
2017-04-26 15:04:31 +10:00
Justin Viiret
b525d7786c
rose: don't assign fragments for event lits
2017-04-26 15:04:31 +10:00
Justin Viiret
bf93c993cb
rose: remove final_id
2017-04-26 15:04:31 +10:00
Justin Viiret
b68694b729
rose: new program construction code
2017-04-26 15:04:31 +10:00
Justin Viiret
176c61aeaa
rose_build_bytecode: clean up findEdgesByLiteral()
2017-04-26 15:04:31 +10:00
Justin Viiret
6a0dc261a2
rose_build_bytecode: less final_id
2017-04-26 15:04:31 +10:00
Justin Viiret
24ffb156e9
rose: eliminate global final to fragment map
2017-04-26 15:04:31 +10:00
Justin Viiret
454fbf33d5
rose: tidy
2017-04-26 15:04:31 +10:00
Justin Viiret
dc50ab291b
container: allow sort_and_unique to have a comparator
2017-04-26 15:04:31 +10:00
Justin Viiret
cea8f452f2
rose: reorganise delay program generation
2017-04-26 15:04:31 +10:00
Justin Viiret
a2d2f7cb95
rose: dedupe anch programs and RECORD_ANCHOREDs
2017-04-26 15:04:31 +10:00
Justin Viiret
75c7f42314
rose: don't emit RECORD_ANCHORED in anchored progs
2017-04-26 15:04:31 +10:00
Justin Viiret
f5dd20e461
rose: rearrange anchored program generation
2017-04-26 15:04:31 +10:00
Justin Viiret
6a945e27fb
rose: reduce delay program dep on final_id
2017-04-26 15:04:31 +10:00
Justin Viiret
dc8220648c
rose: remove now-unused anchored_base_id
2017-04-26 15:04:30 +10:00
Justin Viiret
c426d2dc7d
rose: reduce anchored program dep on final_id
...
We only need to build anchored programs for cases where a
RECORD_ANCHORED instruction has been generated, and we can key those
directly rather than using final_id.
2017-04-26 15:04:30 +10:00
Justin Viiret
ea8d0bcb1c
rose: build fragments directly
2017-04-26 15:04:30 +10:00
Justin Viiret
79512bd5c3
rose: use fragment ids earlier for anchored dfas
2017-04-26 15:04:30 +10:00
Justin Viiret
8b25d83415
rose: write fragment ids into literal_info
2017-04-26 15:04:30 +10:00
Justin Viiret
7bdb327203
rose: use final_ids less in program construction
2017-04-26 14:56:48 +10:00
Justin Viiret
a83b7cb348
move final_id_to_literal into build_context
2017-04-26 14:56:48 +10:00
Justin Viiret
a0260c0362
rose: do fragment group assignment earlier
2017-04-26 14:56:48 +10:00
Justin Viiret
6bf35cb637
rose: make groupByFragment local
2017-04-26 14:49:51 +10:00
Justin Viiret
a5b3bc814f
rose: delete RoseEngine::literalCount
2017-04-26 14:49:51 +10:00
Justin Viiret
9550058e75
remove lit program tables from bytecode
2017-04-26 14:49:51 +10:00
Justin Viiret
c2cac5009a
tidy up args to builders
2017-04-26 14:46:49 +10:00
Justin Viiret
3ae2fb417e
move final_to_frag_map into RoseBuildImpl (for dump code)
2017-04-26 14:46:49 +10:00
Justin Viiret
76f72b6ab4
rose: use program offsets directly in lit tables
2017-04-26 14:46:48 +10:00
Justin Viiret
ac858cd47c
rose: build a separate delay rebuild matcher
2017-04-26 14:46:48 +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
Justin Viiret
c6b2563df6
rose: delete literal_info requires_explode flag
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
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
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
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