1448 Commits

Author SHA1 Message Date
Justin Viiret
18f843bcc1 rose: add CLEAR_WORK_DONE instruction
Preparatory work for allowing fragments to be shared between literals
that squash groups and those that don't.
2017-04-26 15:18:26 +10:00
Matthew Barr
803f61d818 ICC doesn't have a __POPCNT__ macro 2017-04-26 15:18:26 +10:00
Justin Viiret
1f3a000bfa dump_util: move into namespace ue2 2017-04-26 15:18:26 +10:00
Justin Viiret
7d23a7e2d3 som: move som_type into namespace ue2 2017-04-26 15:18:26 +10:00
Justin Viiret
a871f70c25 ng_extparam: split up work and do per-comp reduce
This change breaks extparam processing up into:

 - propagateExtendedParams: propagates min_length, min_offset and
   max_offset into the reports on the graph
 - reduceExtendedParams: runs graph reductions based on extparams

Then, we apply the reduce pass to the whole graph, and later as well to
each component after calc_components.
2017-04-26 15:18:22 +10:00
Justin Viiret
0a163b5535 rose: only use live reports for dedupe assignment 2017-04-26 15:18:13 +10:00
Justin Viiret
a1bc69f3dd rose_build_groups: allow simple-exh lits to squash 2017-04-26 15:18:13 +10:00
Matthew Barr
1d9a5421ce ICC doesn't have a __BMI2__ macro 2017-04-26 15:18:13 +10:00
Alex Coyte
0cbec2c1c3 mmbBuildInitRangePlan: correct offset if initial block is not block 0 2017-04-26 15:18:13 +10:00
Justin Viiret
1200f33116 ng_region: no need to copy enters 2017-04-26 15:18:13 +10:00
Justin Viiret
699ab4190a ng_region: clean up and modernise 2017-04-26 15:18:13 +10:00
Justin Viiret
ca22edc9d3 ng_region: don't realloc exits 2017-04-26 15:18:13 +10:00
Justin Viiret
d63fdcd860 ng_region: simplify checkAndAddExitCandidate 2017-04-26 15:18:13 +10:00
Justin Viiret
7396c93990 ng_region: clean up refineExits 2017-04-26 15:18:13 +10:00
Justin Viiret
8823a8fbfd ng_region: use flat_sets in exit_info 2017-04-26 15:18:13 +10:00
Justin Viiret
546091f819 ng_calc_components: filter vertices from ug 2017-04-26 15:18:13 +10:00
Justin Viiret
4b3ff085d3 ng_undirected: avoid parallel edge at construction
(Rather than using setS for out edges)
2017-04-26 15:18:13 +10:00
Justin Viiret
9724f8c3cc ng_undirected: modernize code 2017-04-26 15:18:13 +10:00
Justin Viiret
560e522457 ng_calc_components: add Grey box control 2017-04-26 15:18:13 +10:00
Justin Viiret
ba867ebaff ng_calc_components: rework to move graphs
Rather than cloning graphs for output, rework calc components so that it
moves them.
2017-04-26 15:18:13 +10:00
Justin Viiret
5dfae12a62 ng: split NGWrapper into NGHolder, ExpressionInfo
We now use NGHolder for all graph information, while other expression
properties (report, flag information, etc) go in new class
ExpressionInfo.
2017-04-26 15:18:09 +10:00
Matthew Barr
01b91da1cd Use the default allocator for std::vector 2017-04-26 15:17:19 +10:00
Alex Coyte
de52b30c3e make rose responsible for dumping its bytecode 2017-04-26 15:17:19 +10:00
Alex Coyte
aeba9bc42c rose_build_bytecode: make build_context, RoseBuildImpl params const 2017-04-26 15:17:19 +10:00
Justin Viiret
8a6b38a9b5 ng_dominators: use a vector for doms internally 2017-04-26 15:17:11 +10:00
Justin Viiret
5005d50050 limex_compile: don't repeatedly calc dominators 2017-04-26 15:17:11 +10:00
Justin Viiret
187a4b82c2 small_vector: add header to handle older Boost
This provides ue2::small_vector<T, N, Alloc> which will fall back to
std::vector<T, Alloc> where the Boost version is too old or not present.
2017-04-26 15:17:11 +10:00
Wang, Xiang W
448ce8a496 UE-3098: add unaligned load for andn without BMI 2017-04-26 15:17:03 +10:00
Justin Viiret
533fcf383d ng_fuzzy: apply a resource limit to vertex count 2017-04-26 15:16:27 +10:00
Wang, Xiang W
ffab97ca8c FDR: delete dead confirm code 2017-04-26 15:16:27 +10:00
Matthew Barr
d2416736cb Use intrinsic to get correct movq everywhere
The real trick here is that _mm_set_epi64x() (note the 'x') takes a 64-bit
value - not a ptr to a 128-bit value like the non-x - so compilers don't
twist themselves in knots with alignment or whatever confuses them.
2017-04-26 15:16:03 +10:00
Justin Viiret
96fdca6f54 rose: guard writeNfaInfo from zero NFAs 2017-04-26 15:16:03 +10:00
Justin Viiret
5edecbf539 ng: check can_never_match before validate_fuzzy 2017-04-26 15:16:03 +10:00
Matthew Barr
c50a931bb4 Use std::move explicitly to avoid ambiguity with boost 2017-04-26 15:16:03 +10:00
Anatoly Burakov
2de6706df2 Adding support for compiling approximate matching patterns
Adds new "edit_distance" extparam
2017-04-26 15:11:39 +10:00
Justin Viiret
60fc975c81 rose: use ROUNDUP_N for alignment 2017-04-26 15:11:10 +10:00
Justin Viiret
09d19c7c57 rose: remove unnecessary engine blob size check 2017-04-26 15:11:10 +10:00
Justin Viiret
2ec3019e04 rose: do state work before writing NfaInfo structs 2017-04-26 15:11:10 +10:00
Justin Viiret
96be1190ef rose: move matcher bytecode to engine blob 2017-04-26 15:11:10 +10:00
Justin Viiret
b2aae060d8 rose: consistent naming in updateNfaState 2017-04-26 15:11:10 +10:00
Justin Viiret
6013fb1546 engine_blob: add_range() member function 2017-04-26 15:11:10 +10:00
Justin Viiret
10aa806d67 rose: clean up nfa state alloc 2017-04-26 15:11:10 +10:00
Justin Viiret
246f9f4f86 rose: update nfa info earlier, in engine blob 2017-04-26 15:11:10 +10:00
Justin Viiret
a0b0247e47 rose: move NfaInfo to engine blob 2017-04-26 15:11:10 +10:00
Justin Viiret
c619621573 rose: move leftfix info into engine blob, refactor 2017-04-26 15:11:10 +10:00
Justin Viiret
395d6ae650 rose: move dkey info to engine blob 2017-04-26 15:11:10 +10:00
Justin Viiret
e3d2d67833 rose: move lookaround tables to engine blob 2017-04-26 15:11:10 +10:00
Justin Viiret
b6254ca11f rose: move active leftfix iter to engine blob 2017-04-26 15:11:10 +10:00
Justin Viiret
282f72e04d rose: move SOM reverse NFAs to engine_blob 2017-04-26 15:11:10 +10:00
Justin Viiret
f4bda9def6 rose: build RoseEngine prototype for bytecode
Rather than tracking a great many offsets in u32 variables, build them
in a RoseEngine prototype.
2017-04-26 15:11:10 +10:00