]> git.ipfire.org Git - thirdparty/vectorscan.git/commitdiff
fdr/teddy: store and dump number of strings
authorJustin Viiret <justin.viiret@intel.com>
Fri, 23 Jun 2017 06:32:10 +0000 (16:32 +1000)
committerMatthew Barr <matthew.barr@intel.com>
Mon, 21 Aug 2017 01:10:11 +0000 (11:10 +1000)
src/fdr/fdr_compile.cpp
src/fdr/fdr_dump.cpp
src/fdr/fdr_internal.h
src/fdr/teddy_compile.cpp
src/fdr/teddy_internal.h

index cd0013e4d3afcf97a1cd2ac389fdd88c7942bf2c..6f2de3d908031090e911944054fbd9c84d02ee6d 100644 (file)
@@ -175,6 +175,7 @@ bytecode_ptr<FDR> FDRCompiler::setupFDR() {
     fdr->size = size;
     fdr->engineID = eng.getID();
     fdr->maxStringLen = verify_u32(maxLen(lits));
+    fdr->numStrings = verify_u32(lits.size());
     assert(eng.bits > 8 && eng.bits < 16); // we allow domains 9 to 15 only
     fdr->domain = eng.bits;
     fdr->domainMask = (1 << eng.bits) - 1;
index 3fe9062abd9b68cecd26e708489f0ad13c6f5691..ae81f257e5ae234c4f14db0819c43790367ec712 100644 (file)
@@ -86,7 +86,7 @@ void dumpTeddy(const Teddy *teddy, FILE *f) {
     fprintf(f, "    masks      %u\n", des->numMasks);
     fprintf(f, "    buckets    %u\n", des->getNumBuckets());
     fprintf(f, "    packed     %s\n", des->packed ? "true" : "false");
-    fprintf(f, "    strings    ???\n");
+    fprintf(f, "    strings    %u\n", teddy->numStrings);
     fprintf(f, "    size       %zu bytes\n", fdrSize((const FDR *)teddy));
     fprintf(f, "    max length %u\n", teddy->maxStringLen);
     fprintf(f, "    floodoff   %u (%x)\n", teddy->floodOffset,
@@ -107,7 +107,7 @@ void dumpFDR(const FDR *fdr, FILE *f) {
 
     fprintf(f, "    domain     %u\n", fdr->domain);
     fprintf(f, "    stride     %u\n", fdr->stride);
-    fprintf(f, "    strings    ???\n");
+    fprintf(f, "    strings    %u\n", fdr->numStrings);
     fprintf(f, "    size       %zu bytes\n", fdrSize(fdr));
     fprintf(f, "    max length %u\n", fdr->maxStringLen);
     fprintf(f, "    floodoff   %u (%x)\n", fdr->floodOffset, fdr->floodOffset);
index 8109d1e822ced8c1a98e48b309e6b0208be1f327..2315b2d8157e7a2bf0a9c87f1fcce9c99ad9fb49 100644 (file)
@@ -69,6 +69,7 @@ struct FDR {
     u32 engineID;
     u32 size;
     u32 maxStringLen;
+    u32 numStrings;
     u32 confOffset;
     u32 floodOffset;
     u8 stride; /* stride - how frequently the data is consulted by the first
index 14f19354d088cff01bbc0accc4f1d03362163238..a35e59000b38a6fa989d63126324f21745a569c1 100644 (file)
@@ -520,6 +520,7 @@ bytecode_ptr<FDR> TeddyCompiler::build() {
     teddy->size = size;
     teddy->engineID = eng.getID();
     teddy->maxStringLen = verify_u32(maxLen(lits));
+    teddy->numStrings = verify_u32(lits.size());
 
     // Write confirm structures.
     u8 *ptr = teddy_base + ROUNDUP_CL(headerSize) + ROUNDUP_CL(maskLen) +
index d175245244a311d6d33084f711722785f99e2a66..174710bc58c57093044afcd0498a46756db30073 100644 (file)
@@ -55,6 +55,7 @@ struct Teddy {
     u32 engineID;
     u32 size;
     u32 maxStringLen;
+    u32 numStrings;
     u32 confOffset;
     u32 floodOffset;
 };