#include "rose_build_lit_accel.h"
#include "rose_build_width.h"
#include "hwlm/hwlm_build.h"
+#include "hwlm/hwlm_internal.h"
#include "hwlm/hwlm_literal.h"
#include "nfa/castlecompile.h"
#include "nfa/nfa_api_queue.h"
history_required = max(history_required, a.history_required);
}
+static
+void buildAccel(const RoseBuildImpl &build, const MatcherProto &mp,
+ HWLM &hwlm) {
+ if (!build.cc.grey.hamsterAccelForward) {
+ return;
+ }
+
+ if (hwlm.type == HWLM_ENGINE_NOOD) {
+ return;
+ }
+
+ buildForwardAccel(&hwlm, mp.accel_lits, build.getInitialGroups());
+}
+
aligned_unique_ptr<HWLM>
buildFloatingMatcher(const RoseBuildImpl &build, size_t longLitLengthThreshold,
const map<u32, u32> &final_to_frag_map,
throw CompileError("Unable to generate bytecode.");
}
- if (build.cc.grey.hamsterAccelForward) {
- buildForwardAccel(hwlm.get(), mp.accel_lits, build.getInitialGroups());
- }
+ buildAccel(build, mp, *hwlm);
if (build.cc.streaming) {
DEBUG_PRINTF("history_required=%zu\n", mp.history_required);
throw CompileError("Unable to generate bytecode.");
}
- if (build.cc.grey.hamsterAccelForward) {
- buildForwardAccel(hwlm.get(), mp.accel_lits, build.getInitialGroups());
- }
+ buildAccel(build, mp, *hwlm);
*sbsize = hwlmSize(hwlm.get());
assert(*sbsize);
throw CompileError("Unable to generate bytecode.");
}
- if (build.cc.grey.hamsterAccelForward) {
- buildForwardAccel(hwlm.get(), mp.accel_lits, build.getInitialGroups());
- }
+ buildAccel(build, mp, *hwlm);
*esize = hwlmSize(hwlm.get());
assert(*esize);