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
Justin Viiret
6bcccb4c5d
Rose: further generalise literal dedupe work
2016-03-01 11:36:10 +11:00
Justin Viiret
f519fd9bcd
Rose: don't assume roles with >1 lit need dedupe
...
We only require dedupe for such roles when they have literals that can
arrive simultaneously (i.e. one literal overlaps with the suffix of
another).
2016-03-01 11:36:10 +11:00
Justin Viiret
0d9422eed7
Rose: make DR runtime path external report only
2016-03-01 11:36:10 +11:00
Justin Viiret
b62711a18f
Rose: only use direct reports for external reports
2016-03-01 11:36:10 +11:00
Justin Viiret
cc5db61686
Rose: allow DR literals to share vertices
2016-03-01 11:36:09 +11:00
Justin Viiret
31dea6c275
Rose: allow direct reports to be aliased
2016-03-01 11:36:09 +11:00
Justin Viiret
6294b8a89b
Rose: assign DRs in allocateFinalLiteralId
...
Previously, direct reports were allocated earlier; now all final IDs are
assigned in the same place.
2016-03-01 11:36:09 +11:00
Justin Viiret
6e8f394d8d
Make comparison signed (fix warning)
2016-03-01 11:36:09 +11:00
Justin Viiret
c055f81398
Dump: give abs jump targets in output
2016-03-01 11:35:09 +11:00
Justin Viiret
129578f970
Rose program: Improvements to debug/assertions
...
- Add current pc to debug printf.
- Assert that pc doesn't escape the RoseEngine structure.
2016-03-01 11:35:09 +11:00
Justin Viiret
030cc2a487
Update Rose state layout description
...
Many of the things in this list no longer existed.
2016-03-01 11:35:09 +11:00
Justin Viiret
5a1dd54049
Split CHECK_LEFTFIX into CHECK_{INFIX,PREFIX}
2016-03-01 11:35:08 +11:00
Justin Viiret
7a775e5fab
reduceInfixQueue: factor out any_work check
2016-03-01 11:34:57 +11:00
Justin Viiret
4d5710a84a
Rename rosePrefixCheckMiracles to roseLeftfix...
2016-03-01 11:34:57 +11:00
Justin Viiret
8f3471dd4e
Rename reduceQueue to reduceInfixQueue
2016-03-01 11:34:57 +11:00