fdr: move long literal handling into Rose

Move the hash table used for long literal support in streaming mode from
FDR to Rose, and introduce new instructions CHECK_LONG_LIT and
CHECK_LONG_LIT_NOCASE for doing literal confirm for long literals.

This simplifies FDR confirm, and guarantees that HWLM matchers will only
be used for literals < 256 bytes long.
This commit is contained in:
Justin Viiret
2016-09-07 15:59:23 +10:00
committed by Matthew Barr
parent 6ed30194ce
commit 68bf473e2e
40 changed files with 1759 additions and 1310 deletions

View File

@@ -56,6 +56,8 @@ namespace ue2 {
#define ROSE_GROUPS_MAX 64
#define ROSE_LONG_LITERAL_THRESHOLD_MIN 33
struct BoundaryReports;
struct CastleProto;
struct CompileContext;
@@ -603,6 +605,9 @@ private:
ReportID next_nfa_report;
};
size_t calcLongLitThreshold(const RoseBuildImpl &build,
const size_t historyRequired);
// Free functions, in rose_build_misc.cpp
bool hasAnchHistorySucc(const RoseGraph &g, RoseVertex v);