Justin Viiret
e466e67b79
AlignedAllocator: simplify and fix for MSVC, C++11
...
- Simplify thanks to minimal allocator requirements in C++11.
- Add required copy constructor.
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
12921b7c97
Add hs_expression_ext_info() API function
...
This is a variant of hs_expression_info() that can also accept extended
parameters.
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
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