fatbit_clear(scratch->aqa);
}
-static really_inline
-void roseEodExec_i(const struct RoseEngine *t, u64a offset,
- struct hs_scratch *scratch, UNUSED const char is_streaming) {
- assert(t);
- assert(scratch->core_info.buf || scratch->core_info.hbuf);
- assert(!scratch->core_info.buf || !scratch->core_info.hbuf);
- assert(!can_stop_matching(scratch));
+void roseStreamEodExec(const struct RoseEngine *t, u64a offset,
+ struct hs_scratch *scratch) {
+ assert(scratch);
+ assert(t->requiresEodCheck);
+ DEBUG_PRINTF("ci buf %p/%zu his %p/%zu\n", scratch->core_info.buf,
+ scratch->core_info.len, scratch->core_info.hbuf,
+ scratch->core_info.hlen);
+
+ // We should not have been called if we've already been told to terminate
+ // matching.
+ assert(!told_to_stop_matching(scratch));
+
+ if (t->maxBiAnchoredWidth != ROSE_BOUND_INF
+ && offset > t->maxBiAnchoredWidth) {
+ DEBUG_PRINTF("bailing, we are beyond max width\n");
+ /* also some of the history/state may be stale */
+ return;
+ }
if (!t->eodProgramOffset) {
DEBUG_PRINTF("no eod program\n");
return;
}
+ initContext(t, offset, scratch);
+
DEBUG_PRINTF("running eod program at %u\n", t->eodProgramOffset);
// There should be no pending delayed literals.
roseRunProgram(t, scratch, t->eodProgramOffset, som, offset, match_len,
in_anchored, in_catchup, from_mpv, skip_mpv_catchup);
}
-
-void roseEodExec(const struct RoseEngine *t, u64a offset,
- struct hs_scratch *scratch) {
- assert(scratch);
- assert(t->requiresEodCheck);
- DEBUG_PRINTF("ci buf %p/%zu his %p/%zu\n", scratch->core_info.buf,
- scratch->core_info.len, scratch->core_info.hbuf,
- scratch->core_info.hlen);
-
- // We should not have been called if we've already been told to terminate
- // matching.
- assert(!told_to_stop_matching(scratch));
-
- if (t->maxBiAnchoredWidth != ROSE_BOUND_INF
- && offset > t->maxBiAnchoredWidth) {
- DEBUG_PRINTF("bailing, we are beyond max width\n");
- /* also some of the history/state may be stale */
- return;
- }
-
- initContext(t, offset, scratch);
- roseEodExec_i(t, offset, scratch, 1);
-}
/* assumes core_info in scratch has been init to point to data */
void roseStreamExec(const struct RoseEngine *t, struct hs_scratch *scratch);
-void roseEodExec(const struct RoseEngine *t, u64a offset,
- struct hs_scratch *scratch);
+void roseStreamEodExec(const struct RoseEngine *t, u64a offset,
+ struct hs_scratch *scratch);
hwlmcb_rv_t rosePureLiteralCallback(size_t start, size_t end, u32 id,
void *context);