mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-06-28 16:41:01 +03:00
rose: move dkey info to engine blob
This commit is contained in:
parent
e3d2d67833
commit
395d6ae650
@ -2709,6 +2709,15 @@ void writeLookaroundTables(build_context &bc, RoseEngine &proto) {
|
||||
bc.engine_blob.add(begin(reach_table), end(reach_table));
|
||||
}
|
||||
|
||||
static
|
||||
void writeDkeyInfo(const ReportManager &rm, build_context &bc,
|
||||
RoseEngine &proto) {
|
||||
const auto inv_dkeys = rm.getDkeyToReportTable();
|
||||
proto.invDkeyOffset = bc.engine_blob.add(begin(inv_dkeys), end(inv_dkeys));
|
||||
proto.dkeyCount = rm.numDkeys();
|
||||
proto.dkeyLogSize = fatbit_size(proto.dkeyCount);
|
||||
}
|
||||
|
||||
static
|
||||
bool hasBoundaryReports(const BoundaryReports &boundary) {
|
||||
if (!boundary.report_at_0.empty()) {
|
||||
@ -5384,6 +5393,7 @@ aligned_unique_ptr<RoseEngine> RoseBuildImpl::buildFinalEngine(u32 minWidth) {
|
||||
addSomRevNfas(bc, proto, ssm);
|
||||
|
||||
writeLookaroundTables(bc, proto);
|
||||
writeDkeyInfo(rm, bc, proto);
|
||||
|
||||
// Enforce role table resource limit.
|
||||
if (num_vertices(g) > cc.grey.limitRoseRoleCount) {
|
||||
@ -5488,14 +5498,8 @@ aligned_unique_ptr<RoseEngine> RoseBuildImpl::buildFinalEngine(u32 minWidth) {
|
||||
u32 state_scatter_aux_offset = currOffset;
|
||||
currOffset += aux_size(state_scatter);
|
||||
|
||||
currOffset = ROUNDUP_N(currOffset, alignof(ReportID));
|
||||
proto.invDkeyOffset = currOffset;
|
||||
currOffset += rm.numDkeys() * sizeof(ReportID);
|
||||
|
||||
proto.historyRequired = verify_u32(historyRequired);
|
||||
proto.ekeyCount = rm.numEkeys();
|
||||
proto.dkeyCount = rm.numDkeys();
|
||||
proto.dkeyLogSize = fatbit_size(proto.dkeyCount);
|
||||
|
||||
proto.somHorizon = ssm.somPrecision();
|
||||
proto.somLocationCount = ssm.numSomSlots();
|
||||
@ -5584,8 +5588,6 @@ aligned_unique_ptr<RoseEngine> RoseBuildImpl::buildFinalEngine(u32 minWidth) {
|
||||
memcpy(ptr + proto.sbmatcherOffset, sbtable.get(), sbsize);
|
||||
}
|
||||
|
||||
copy_bytes(ptr + proto.invDkeyOffset, rm.getDkeyToReportTable());
|
||||
|
||||
write_out(&engine->state_init, (char *)engine.get(), state_scatter,
|
||||
state_scatter_aux_offset);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user