fdr/teddy: store and dump number of strings

This commit is contained in:
Justin Viiret 2017-06-23 16:32:10 +10:00 committed by Matthew Barr
parent a17ef3e48a
commit e4788aae1a
5 changed files with 6 additions and 2 deletions

View File

@ -175,6 +175,7 @@ bytecode_ptr<FDR> FDRCompiler::setupFDR() {
fdr->size = size; fdr->size = size;
fdr->engineID = eng.getID(); fdr->engineID = eng.getID();
fdr->maxStringLen = verify_u32(maxLen(lits)); 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 assert(eng.bits > 8 && eng.bits < 16); // we allow domains 9 to 15 only
fdr->domain = eng.bits; fdr->domain = eng.bits;
fdr->domainMask = (1 << eng.bits) - 1; fdr->domainMask = (1 << eng.bits) - 1;

View File

@ -86,7 +86,7 @@ void dumpTeddy(const Teddy *teddy, FILE *f) {
fprintf(f, " masks %u\n", des->numMasks); fprintf(f, " masks %u\n", des->numMasks);
fprintf(f, " buckets %u\n", des->getNumBuckets()); fprintf(f, " buckets %u\n", des->getNumBuckets());
fprintf(f, " packed %s\n", des->packed ? "true" : "false"); 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, " size %zu bytes\n", fdrSize((const FDR *)teddy));
fprintf(f, " max length %u\n", teddy->maxStringLen); fprintf(f, " max length %u\n", teddy->maxStringLen);
fprintf(f, " floodoff %u (%x)\n", teddy->floodOffset, 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, " domain %u\n", fdr->domain);
fprintf(f, " stride %u\n", fdr->stride); 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, " size %zu bytes\n", fdrSize(fdr));
fprintf(f, " max length %u\n", fdr->maxStringLen); fprintf(f, " max length %u\n", fdr->maxStringLen);
fprintf(f, " floodoff %u (%x)\n", fdr->floodOffset, fdr->floodOffset); fprintf(f, " floodoff %u (%x)\n", fdr->floodOffset, fdr->floodOffset);

View File

@ -69,6 +69,7 @@ struct FDR {
u32 engineID; u32 engineID;
u32 size; u32 size;
u32 maxStringLen; u32 maxStringLen;
u32 numStrings;
u32 confOffset; u32 confOffset;
u32 floodOffset; u32 floodOffset;
u8 stride; /* stride - how frequently the data is consulted by the first u8 stride; /* stride - how frequently the data is consulted by the first

View File

@ -520,6 +520,7 @@ bytecode_ptr<FDR> TeddyCompiler::build() {
teddy->size = size; teddy->size = size;
teddy->engineID = eng.getID(); teddy->engineID = eng.getID();
teddy->maxStringLen = verify_u32(maxLen(lits)); teddy->maxStringLen = verify_u32(maxLen(lits));
teddy->numStrings = verify_u32(lits.size());
// Write confirm structures. // Write confirm structures.
u8 *ptr = teddy_base + ROUNDUP_CL(headerSize) + ROUNDUP_CL(maskLen) + u8 *ptr = teddy_base + ROUNDUP_CL(headerSize) + ROUNDUP_CL(maskLen) +

View File

@ -55,6 +55,7 @@ struct Teddy {
u32 engineID; u32 engineID;
u32 size; u32 size;
u32 maxStringLen; u32 maxStringLen;
u32 numStrings;
u32 confOffset; u32 confOffset;
u32 floodOffset; u32 floodOffset;
}; };