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.
This commit is contained in:
Justin Viiret
2016-02-18 09:45:37 +11:00
committed by Matthew Barr
parent b58d05dfec
commit 67b9784dae
26 changed files with 681 additions and 1176 deletions

View File

@@ -122,8 +122,6 @@ struct RoseContext {
RoseCallback cb;
RoseCallbackSom cb_som;
u32 filledDelayedSlots;
u32 curr_anchored_loc; /**< last read/written row */
u32 curr_row_offset; /**< last read/written entry */
u32 curr_qi; /**< currently executing main queue index during
* \ref nfaQueueExec */
};
@@ -158,15 +156,11 @@ struct ALIGN_CL_DIRECTIVE hs_scratch {
struct fatbit *aqa; /**< active queue array; fatbit of queues that are valid
* & active */
struct fatbit **delay_slots;
struct fatbit **am_log;
struct fatbit **al_log;
u64a am_log_sum;
u64a al_log_sum;
struct catchup_pq catchup_pq;
struct core_info core_info;
struct match_deduper deduper;
u32 anchored_region_len;
u32 anchored_region_width;
u32 anchored_literal_region_len;
u32 anchored_literal_count;
u32 delay_count;
@@ -192,11 +186,6 @@ struct hs_scratch *tctxtToScratch(struct RoseContext *tctxt) {
((char *)tctxt - offsetof(struct hs_scratch, tctxt));
}
static really_inline
struct fatbit **getAnchoredLog(struct hs_scratch *scratch) {
return scratch->am_log;
}
/* array of fatbit ptr; TODO: why not an array of fatbits? */
static really_inline
struct fatbit **getAnchoredLiteralLog(struct hs_scratch *scratch) {