mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-06-28 16:41:01 +03:00
runtime: init more of scratch in pure-literal exec
This commit is contained in:
parent
31dd33a9be
commit
a5a6051b8b
@ -186,6 +186,18 @@ void rawBlockExec(const struct RoseEngine *rose, struct hs_scratch *scratch) {
|
|||||||
roseBlockExec(rose, scratch);
|
roseBlockExec(rose, scratch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static really_inline
|
||||||
|
void pureLiteralInitScratch(struct hs_scratch *scratch, u64a offset) {
|
||||||
|
// Some init has already been done.
|
||||||
|
assert(offset == scratch->core_info.buf_offset);
|
||||||
|
|
||||||
|
scratch->tctxt.lit_offset_adjust = offset + 1;
|
||||||
|
scratch->tctxt.lastEndOffset = offset;
|
||||||
|
scratch->tctxt.delayLastEndOffset = offset;
|
||||||
|
scratch->tctxt.filledDelayedSlots = 0;
|
||||||
|
scratch->al_log_sum = 0;
|
||||||
|
}
|
||||||
|
|
||||||
static really_inline
|
static really_inline
|
||||||
void pureLiteralBlockExec(const struct RoseEngine *rose,
|
void pureLiteralBlockExec(const struct RoseEngine *rose,
|
||||||
struct hs_scratch *scratch) {
|
struct hs_scratch *scratch) {
|
||||||
@ -198,9 +210,8 @@ void pureLiteralBlockExec(const struct RoseEngine *rose,
|
|||||||
size_t length = scratch->core_info.len;
|
size_t length = scratch->core_info.len;
|
||||||
DEBUG_PRINTF("rose engine %d\n", rose->runtimeImpl);
|
DEBUG_PRINTF("rose engine %d\n", rose->runtimeImpl);
|
||||||
|
|
||||||
// RoseContext values that need to be set for use by roseCallback.
|
pureLiteralInitScratch(scratch, 0);
|
||||||
scratch->tctxt.groups = rose->initialGroups;
|
scratch->tctxt.groups = rose->initialGroups;
|
||||||
scratch->tctxt.lit_offset_adjust = 1;
|
|
||||||
|
|
||||||
hwlmExec(ftable, buffer, length, 0, roseCallback, scratch,
|
hwlmExec(ftable, buffer, length, 0, roseCallback, scratch,
|
||||||
rose->initialGroups);
|
rose->initialGroups);
|
||||||
@ -743,9 +754,8 @@ void pureLiteralStreamExec(struct hs_stream *stream_state,
|
|||||||
DEBUG_PRINTF("::: streaming rose ::: offset = %llu len = %zu\n",
|
DEBUG_PRINTF("::: streaming rose ::: offset = %llu len = %zu\n",
|
||||||
stream_state->offset, scratch->core_info.len);
|
stream_state->offset, scratch->core_info.len);
|
||||||
|
|
||||||
// RoseContext values that need to be set for use by roseCallback.
|
pureLiteralInitScratch(scratch, stream_state->offset);
|
||||||
scratch->tctxt.groups = loadGroups(rose, scratch->core_info.state);
|
scratch->tctxt.groups = loadGroups(rose, scratch->core_info.state);
|
||||||
scratch->tctxt.lit_offset_adjust = scratch->core_info.buf_offset + 1;
|
|
||||||
|
|
||||||
// Pure literal cases don't have floatingMinDistance set, so we always
|
// Pure literal cases don't have floatingMinDistance set, so we always
|
||||||
// start the match region at zero.
|
// start the match region at zero.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user