351 Commits

Author SHA1 Message Date
Alex Coyte
2b1a7da188 deterministic assembleProgramBlocks() 2017-05-30 13:59:00 +10:00
Justin Viiret
dfe1b8a2af ng_depth: rename calcDepth functions, return vec 2017-05-30 13:59:00 +10:00
Alex Coyte
15c8a7bd98 rose: rework storage of extra lookaround information
- remove explicit lookaround table from bytecode
- make the RoseInstr responsible for adding required info to blob
2017-05-30 13:59:00 +10:00
Alex Coyte
097d73c7ff pass roleStateIndices by reference 2017-05-30 13:58:59 +10:00
Alex Coyte
b30e5021f1 Strengthen assert to indicate that q->end is less than q->cur
Coverity CID-167665
2017-05-30 13:58:59 +10:00
Justin Viiret
8b9328fe9e rose: replace RoseLiteralMap use of bimap
This apoproach is simpler and more efficient for cases with large
numbers of literals.
2017-05-30 13:58:59 +10:00
Justin Viiret
a75b2ba2e5 rose: remove hasLiteral() 2017-05-30 13:58:59 +10:00
Alex Coyte
bb29aeb298 rose: shift program construction functions to rose_build_program 2017-05-30 13:58:32 +10:00
Justin Viiret
82838f5728 rose_build: move dedupe analysis into own file 2017-05-30 13:58:32 +10:00
Alex Coyte
1287b70f4b split out instruction details to own files 2017-05-30 13:58:32 +10:00
Alex Coyte
f74f475189 rose_program: merge RECORD_ANCHORED instruction into ANCHORED_DELAY 2017-05-30 13:58:32 +10:00
Alex Coyte
e24c38a85c rose: minor improvements to avoid unneeded program instructions
- strip out lonely check handled instructions
- avoid producing programs for empty ghost roles
2017-05-30 13:58:32 +10:00
Alex Coyte
88fd95e38a rose: minor clean up of catchup
- anchored dfa do not mean that catchup is required
- remove needsCatchup from rose bytecode as catchup is based on interpreter
2017-05-30 13:58:32 +10:00
Alex Coyte
a810bac8f7 be more selective about generating CLEAR_WORK_DONE instructions 2017-05-30 13:58:32 +10:00
Alex Coyte
cd424bdb45 minor clean up of rose_build_bytecode.cpp
- consistently name functions creating programs as makeFoo()
- replace writeLiteralProgram() with makeFragmentProgram()
- make applyFinalSpecialisation() part of writeProgram(bc, prog)
- seperate users who want to make a program for a single literal and fragments
2017-05-30 13:58:04 +10:00
Justin Viiret
0dd8536c6e dfa: only accel init states from smwr path
If the small-write DFA has been built from literals, then we only need
to look for accel states at init.
2017-05-30 13:57:32 +10:00
Matthew Barr
19c7161d04 Use ue2::noncopyable instead of deleting copy ctor 2017-04-26 15:19:51 +10:00
Xu, Chi
2f9d063190 rose: fix CHECK_MULTIPATH_LOOKAROUND match difference bug 2017-04-26 15:19:49 +10:00
Justin Viiret
3e5a8c9c90 rose: eliminate roseSize, use bytecode_ptr size 2017-04-26 15:19:43 +10:00
Justin Viiret
d269b83dda rose_build_long_lit: use bytecode_ptr 2017-04-26 15:19:43 +10:00
Justin Viiret
b6047ea5d4 rose: use bytecode_ptr for interpreter programs 2017-04-26 15:19:36 +10:00
Justin Viiret
0a3bd455ad rose_build_bytecode: fix up indentation 2017-04-26 15:19:36 +10:00
Justin Viiret
63fe84c3f1 bytecode_ptr: add make_zeroed_bytecode_ptr
Rather than always zeroing memory.
2017-04-26 15:19:36 +10:00
Justin Viiret
a197074c5d nfa: switch to using bytecode_ptr<NFA> 2017-04-26 15:19:36 +10:00
Justin Viiret
905ac78061 rose_build_anchored: use bytecode_ptr 2017-04-26 15:19:36 +10:00
Justin Viiret
7b17d418e7 hwlm: use bytecode_ptr for HWLM structures 2017-04-26 15:19:36 +10:00
Justin Viiret
813f1e3fb9 rose: use bytecode_ptr<RoseEngine> 2017-04-26 15:19:36 +10:00
Justin Viiret
a5ed9a9330 smallwrite_build: use bytecode_ptr 2017-04-26 15:19:35 +10:00
Justin Viiret
befdbb781d rose_build_engine_blob: add func for bytecode_ptr 2017-04-26 15:19:35 +10:00
Alex Coyte
894e6835e6 ensure that engines added to the leftQueueMap are real rather than lookarounds 2017-04-26 15:19:33 +10:00
Justin Viiret
cf82924a39 depth: make constructor explicit 2017-04-26 15:19:19 +10:00
Alex Coyte
37cb93e60f rose_build: reduce size/scope of context objects 2017-04-26 15:19:01 +10:00
Xu, Chi
ae3cb7de6f rose: add multi-path shufti 16x8, 32x8, 32x16, 64x8 and multi-path lookaround instructions. 2017-04-26 15:18:56 +10:00
Justin Viiret
1ef87c43ee noncopyable: switch over from boost 2017-04-26 15:18:26 +10:00
Justin Viiret
5fe524fbb3 rose: allow lits that squash to share fragments 2017-04-26 15:18:26 +10:00
Justin Viiret
18f843bcc1 rose: add CLEAR_WORK_DONE instruction
Preparatory work for allowing fragments to be shared between literals
that squash groups and those that don't.
2017-04-26 15:18:26 +10:00
Justin Viiret
0a163b5535 rose: only use live reports for dedupe assignment 2017-04-26 15:18:13 +10:00
Justin Viiret
a1bc69f3dd rose_build_groups: allow simple-exh lits to squash 2017-04-26 15:18:13 +10:00
Alex Coyte
de52b30c3e make rose responsible for dumping its bytecode 2017-04-26 15:17:19 +10:00
Alex Coyte
aeba9bc42c rose_build_bytecode: make build_context, RoseBuildImpl params const 2017-04-26 15:17:19 +10:00
Justin Viiret
96fdca6f54 rose: guard writeNfaInfo from zero NFAs 2017-04-26 15:16:03 +10:00
Matthew Barr
c50a931bb4 Use std::move explicitly to avoid ambiguity with boost 2017-04-26 15:16:03 +10:00
Justin Viiret
60fc975c81 rose: use ROUNDUP_N for alignment 2017-04-26 15:11:10 +10:00
Justin Viiret
09d19c7c57 rose: remove unnecessary engine blob size check 2017-04-26 15:11:10 +10:00
Justin Viiret
2ec3019e04 rose: do state work before writing NfaInfo structs 2017-04-26 15:11:10 +10:00
Justin Viiret
96be1190ef rose: move matcher bytecode to engine blob 2017-04-26 15:11:10 +10:00
Justin Viiret
b2aae060d8 rose: consistent naming in updateNfaState 2017-04-26 15:11:10 +10:00
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