Alex Coyte
575e8c06dc
only show floating groups to the floating table
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
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
426bfc9cfb
rose_build_bytecode: clean up
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
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
c2496fbf76
rose: elide SET_GROUPS when possible
2016-07-08 10:47:07 +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
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
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
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
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
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
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
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
cc5db61686
Rose: allow DR literals to share vertices
2016-03-01 11:36:09 +11:00
Justin Viiret
5a1dd54049
Split CHECK_LEFTFIX into CHECK_{INFIX,PREFIX}
2016-03-01 11:35:08 +11:00
Justin Viiret
996eba9686
Add CATCH_UP to report_block, not "parent" program
...
Also ensure that exhaustion check happens after catch up, as catch up
may fire reports (which could exhaust).
2016-03-01 11:34:57 +11:00
Justin Viiret
961e303ff3
SET_GROUPS instr: don't generate more than one
2016-03-01 11:34:26 +11:00
Justin Viiret
cd133f77ee
DEDUPE instr: generate only when necessary
2016-03-01 11:34:11 +11:00
Justin Viiret
9e9bb6a960
Rose: pack global state bits into one u8
...
Eliminate the RoseRuntimeState structure in favour of a single status
byte that is stored in scratch and copied to/from stream state.
2016-03-01 11:32:01 +11:00
Justin Viiret
28f379d738
Rose: remove alignment req for anchored DFA state
2016-03-01 11:32:01 +11:00
Justin Viiret
060defe6c4
Rose: move more report handling work into program
...
Move report preconditions (bounds, exhaustion, etc) into program
instructions and use a more direct path to the user match callback than
the adaptor functions.
Report handling has been moved to new file src/report.h. Reporting from
EOD now uses the same instructions as normal report handling, rather
than its own.
Jump target tracking in rose_build_bytecode.cpp has been cleaned up.
2016-03-01 11:32:01 +11:00
Justin Viiret
9eb328b455
RoseRuntimeState no longer needs to be packed
...
This structure only contains u8 values now. In the future we may wish to
eliminate it entirely and store the few bits we need more directly.
2016-03-01 11:29:04 +11:00
Justin Viiret
de61b32e98
Use fatbit for anch log, delay slots in scratch
...
Since these structures are in scratch, they do not have to be as small
as possible and we can use fatbit instead of multibit to improve
performance.
2016-03-01 11:24:17 +11:00
Justin Viiret
1c2fca8840
rose_build_anchored: take ref, not pointer
2016-03-01 11:24:17 +11:00
Justin Viiret
69682ed263
Account for multi-dfa case with ANCHORED_DELAY
...
Specifically, we must set build_context::floatingMinLiteralMatchOffset
to 1 when thew anchored table contains multiple DFAs, as they can
produce unordered matches.
This check was already been done, but too late to affect the generation
of ANCHORED_DELAY instructions.
2016-03-01 11:24:13 +11:00