321 Commits

Author SHA1 Message Date
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
Justin Viiret
8e4c68e9df rose: eagerly report EOD literal matches
Where possible, eagerly report a match when a literal that matches at
EOD occurs, rather than setting a state bit and waiting for EOD
processing.
2016-07-08 10:47:33 +10:00
Justin Viiret
1df4da16ad rose: parameterise CHECK_LIT_EARLY 2016-07-08 10:47:33 +10:00
Justin Viiret
7690881f85 rose: make assignGroupsToLiterals a free function 2016-07-08 10:47:08 +10:00
Justin Viiret
89dbbe6c53 rose: make assignGroupsToRoles a free function 2016-07-08 10:47:08 +10:00
Justin Viiret
de201997b7 rose_build_groups: move findGroupSquashers 2016-07-08 10:47:07 +10:00
Justin Viiret
70ef229b2b rose_build_groups: move getGroups, getSuccGroups 2016-07-08 10:47:07 +10:00
Justin Viiret
42419a26d2 rose_build_groups: move assignGroupsToRoles 2016-07-08 10:47:07 +10:00
Justin Viiret
2b24000b1a rose_build_groups: move assignGroupsToLiterals 2016-07-08 10:47:07 +10:00
Justin Viiret
c2496fbf76 rose: elide SET_GROUPS when possible 2016-07-08 10:47:07 +10:00
Justin Viiret
6a6b0e5da6 rose: Do HWLM advisory masks as a complete pass 2016-07-08 10:46:57 +10:00
Justin Viiret
beec5e59df rose: linear scan for lookaround during build
This allows us to reuse more lookaround entries in the bytecode.
2016-07-08 10:46:54 +10:00
Alex Coyte
b097cb1b53 use the correct way to refer to void * 2016-07-08 10:45:06 +10:00
Alex Coyte
afd378b09e UE-2963: be more aggressive in using buildSufPQ_final() 2016-07-08 10:45:06 +10:00
Justin Viiret
6e49544558 exhaust: move functions to report.h 2016-07-08 10:45:06 +10:00
Justin Viiret
9b7eca5400 rose: dump leftfix/suffix queue indices 2016-07-08 10:44:56 +10:00
Boris Nagaev
6d87533ef0 fix add_to_engine_blob for iterator=pointer 2016-07-06 19:46:41 +03:00
Justin Viiret
614ca0accf rose: always push CHECK_BOUNDS onto end of program 2016-06-01 10:56:57 +10:00
Justin Viiret
9826522e34 rose: fix CHECK_NOT_HANDLED placement bug
The CHECK_NOT_HANDLED instruction was being inserted into an already
partially-flattened program, which would result in jump offsets becoming
incorrect.

This change places it as part of the normal flow of program
construction, which avoids this issue.
2016-06-01 10:56:52 +10:00
Alex Coyte
11896dcf42 restore ability to ignore common preds for merges
Check for common preds was broken during refactoring in b9c5d65:
    Rework literal overlap checks for merging engines
2016-05-18 16:26:22 +10:00
Justin Viiret
9e0ec02ac9 rose: assert that program offset is sane 2016-05-18 16:22:01 +10:00
Justin Viiret
ee7f31ac39 mpv: native report remapping 2016-05-18 16:22:01 +10:00
Justin Viiret
c101beb541 castle, lbr: native report remap 2016-05-18 16:21:36 +10:00
Justin Viiret
ec985a62f8 castle: add nfa kind to CastleProto 2016-05-18 16:21:03 +10:00
Justin Viiret
1f41a921f2 mcclellan, gough: native report remapping 2016-05-18 16:20:45 +10:00
Justin Viiret
611579511c rose: remap reports to program offsets 2016-05-18 16:20:42 +10:00
Justin Viiret
f40aa6bd40 report_manager: store report -> program mapping 2016-05-18 16:20:38 +10:00
Justin Viiret
fd7f30a5b5 Merge functions no longer need transfer function 2016-04-20 13:34:57 +10:00
Justin Viiret
319d47ae4f Remove OutfixInfo::chained (which meant "is MPV") 2016-04-20 13:34:57 +10:00
Justin Viiret
16985ab6e5 Use a visitor for outfix engine construction 2016-04-20 13:34:57 +10:00
Justin Viiret
32c866a8f9 OutfixInfo: use boost::variant for engines 2016-04-20 13:34:57 +10:00
Justin Viiret
fa27025bcb Wrap MPV puffettes in a struct 2016-04-20 13:34:57 +10:00
Justin Viiret
1d85987d96 FINAL_REPORT: Add specialised instruction
Specialisation of the REPORT instruction that also terminates execution
of the program. Improves performance on programs that generate many
reports.
2016-04-20 13:34:57 +10:00
Justin Viiret
36150bbc19 Rose: replace internal_report with program
Replace the use of the internal_report structure (for reports from
engines, MPV etc) with the Rose program interpreter.

SOM processing was reworked to use a new som_operation structure that is
embedded in the appropriate instructions.
2016-04-20 13:34:57 +10:00
Justin Viiret
50885f210a exhaust: Update interface
- Only use functions in exhaust.h for valid ekeys
 - Use INVALID_EKEY everywhere (remove dupe END_EXHAUST sentinel)
2016-04-20 13:34:55 +10:00
Justin Viiret
f2c0a66b6f Rose: use a multibit for the exhaustion vector
Previously, the exhaustion vector was a standard bitvector, which
required an expensive memset() call at init for databases with a large
number of exhaustion keys.
2016-04-20 13:34:55 +10:00
Alex Coyte
4a482b07ea UE-2919: add termination checks around handleReportInternally 2016-04-20 13:34:54 +10:00
Justin Viiret
9c9eb2ca9a makeReport: remove unused param 2016-04-20 13:34:54 +10:00
Justin Viiret
ff7e101757 Rose: be more precise with CATCHUP instruction
- Fix bugs introduced by recent addition of the boundary program. It's
  not safe to do catchup there.
- Only do catchup once per report set, when necessary.
2016-04-20 13:34:54 +10:00
Justin Viiret
93a262e54c Rose: use program for boundary reports
Use the program to handle report lists at boundaries, rather than the
previous list-of-reports approach.
2016-04-20 13:34:54 +10:00
Justin Viiret
24ccefa3d3 Rose: make all NFA callbacks take scratch as ctx 2016-04-20 13:34:54 +10:00
Justin Viiret
6af1ead0aa Rose: make HWLM callbacks take scratch as ctx 2016-04-20 13:34:54 +10:00
Justin Viiret
f7a40b200d Rose: remove dead function roseHandleMatch 2016-04-20 13:34:54 +10:00
Justin Viiret
b093616aff Rose build: move HWLM build code to own file
To reduce the size of rose_build_bytecode.cpp a little, move the code
that deals with HWLM literal tables into its own new file.
2016-04-20 13:34:54 +10:00
Justin Viiret
67b9784dae Rose: use program for all literal matches
Unifies all literal match paths so that the Rose program is used for all
of them. This removes the previous specialised "direct report" and
"multi direct report" paths. Some additional REPORT instruction work was
necessary for this.

Reworked literal construction path at compile time in prep for using
program offsets as literal IDs.

Completely removed the anchored log runtime, which is no longer worth
the extra complexity.
2016-04-20 13:34:54 +10:00