176 Commits

Author SHA1 Message Date
Mohammad Abdul Awal
b58d05dfec Fixed some DEBUG_OUTPUT format string. 2016-04-20 13:34:53 +10:00
Justin Viiret
1bc12139a2 ComponentCondReference: mark ctors explicit 2016-04-20 13:34:53 +10:00
Justin Viiret
4e80d22d79 Use using directives to silence hiding warning 2016-04-20 13:34:53 +10:00
Justin Viiret
60dcd0c160 Remove CMake tests for pthread barriers 2016-04-20 13:34:53 +10:00
Matthew Barr
78b780c550 Don't enable -Werror for release builds
Using -Werror is a very good thing during development, but it has the
potential to break the user's build, for example, if they are using a slightly
different compiler combination to one that has been tested previously.
2016-03-01 11:42:49 +11:00
Matthew Barr
82438a567f Fix typo 2016-03-01 11:42:49 +11:00
Matthew Barr
5537f9da78 Install pkgconfig file everywhere but Windows 2016-03-01 11:42:49 +11:00
Justin Viiret
ec223e3622 Always init NFAContext::cached_br
Now that it's on stack, this should be initialised. Silences a warning
from valgrind.
2016-03-01 11:36:22 +11:00
Matthew Barr
90ea5b6010 Correct asserts 2016-03-01 11:36:22 +11:00
Xiang Wang
a7daa70942 Castle: exclusive analysis for multiple subcastle chunks
Apply clique analysis to subcastle chunks if the number of
subcastles is large and check the status of each chunk
separately at runtime.
2016-03-01 11:36:10 +11: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
Matthew Barr
d77ee0839d Improved test for AVX2 support
Test for xsave and XMM/YMM registers. Use ICC dynamic feature detection
where available.
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
Justin Viiret
bba8b62635 Use rose_inline rather than really_inline 2016-03-01 11:34:57 +11:00
Justin Viiret
fb8747295e roseTestLeftfix: unify common "nfa is dead" code 2016-03-01 11:34:57 +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
1619d975c6 limex_runtime.h: scratch header no longer needed 2016-03-01 11:34:57 +11:00
Justin Viiret
cf00094f24 Remove more unused structures from unit tests
The NFA, LBR no longer need scratch or the NFAContext structure stored
outside the NFA stack.
2016-03-01 11:34:38 +11:00
Justin Viiret
c3860a9f29 NFA API: Remove unused scratch ptr from struct mq 2016-03-01 11:34:38 +11:00
Justin Viiret
58f9617f66 NFA API: Remove nfaBlockExecReverse scratch arg
Scratch is no longer used by this function's implementations.
2016-03-01 11:34:38 +11:00
Justin Viiret
3e002f8181 NFA: Move NFAContext to stack (from scratch) 2016-03-01 11:34:38 +11:00
Justin Viiret
7b54856642 Rose: allow block-mode merge of small prefixes
Previously, we disallowed the merging of all Rose prefixes in block mode
where the literal sets are not identical.

This change allows merging if the prefix graphs to be merged are very
small, as a small performance improvement for cases with lots of tiny
prefixes.

This check is deliberately conservative: graphs must have some common
vertices, and the result of the merge must not give up any
accelerability.
2016-03-01 11:34:26 +11:00
Justin Viiret
670eff5bc0 NFA merging: permit different reports
For cases where the edges from start are not to a mix of accept and
acceptEod, report sets can be combined.
2016-03-01 11:34:26 +11:00
Justin Viiret
42d34f19d1 Dump: don't call dumpNfaNotes for SOM reverse NFAs
These NFAs have no queue index.
2016-03-01 11:34:26 +11:00
Justin Viiret
961e303ff3 SET_GROUPS instr: don't generate more than one 2016-03-01 11:34:26 +11:00
Justin Viiret
314da68085 dedupeCatchup: only call when necessary at runtime 2016-03-01 11:34:11 +11:00
Justin Viiret
cd133f77ee DEDUPE instr: generate only when necessary 2016-03-01 11:34:11 +11:00
Justin Viiret
09bf568d95 Rose: clean up use of scratch, RoseContext 2016-03-01 11:32: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
94b33421ca ng_filter: Fix bug introduced in 98eff64
If the max width is modified for a region, use the modified version when
checking to see if a self-loop must be added on the last vertex.
2016-03-01 11:30:20 +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
435b08b984 Docs for Rose callback types 2016-03-01 11:29:04 +11:00
Justin Viiret
4feabf7bd6 Make Rose callback types explicitly take scratch 2016-03-01 11:29:04 +11:00
Justin Viiret
70620327cc Remove RoseContext::userCtx
All Rose callbacks receive scratch as their context.
2016-03-01 11:29:04 +11:00
Justin Viiret
cca4116861 Move cyclic path redundancy into reduce loop
Sometimes cyclic path redundancy can uncover further reduction work that
can be done by the other passes in the reduce loop.
2016-03-01 11:29:00 +11:00