From 905ac780617ddc0f6da4bc21ccff120dbe046891 Mon Sep 17 00:00:00 2001 From: Justin Viiret Date: Mon, 3 Apr 2017 16:47:21 +1000 Subject: [PATCH] rose_build_anchored: use bytecode_ptr --- src/rose/rose_build_anchored.cpp | 10 ++++------ src/rose/rose_build_anchored.h | 6 +++--- src/rose/rose_build_bytecode.cpp | 7 +++---- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/rose/rose_build_anchored.cpp b/src/rose/rose_build_anchored.cpp index 6c7bb1c1..065990ec 100644 --- a/src/rose/rose_build_anchored.cpp +++ b/src/rose/rose_build_anchored.cpp @@ -869,14 +869,13 @@ vector buildAnchoredDfas(RoseBuildImpl &build, return dfas; } -aligned_unique_ptr +bytecode_ptr buildAnchoredMatcher(RoseBuildImpl &build, const vector &fragments, - vector &dfas, size_t *asize) { + vector &dfas) { const CompileContext &cc = build.cc; if (dfas.empty()) { DEBUG_PRINTF("empty\n"); - *asize = 0; return nullptr; } @@ -892,8 +891,7 @@ buildAnchoredMatcher(RoseBuildImpl &build, const vector &fragments, throw ResourceLimitError(); } - *asize = total_size; - auto atable = aligned_zmalloc_unique(total_size); + auto atable = make_bytecode_ptr(total_size, 64); char *curr = (char *)atable.get(); u32 state_offset = 0; @@ -919,7 +917,7 @@ buildAnchoredMatcher(RoseBuildImpl &build, const vector &fragments, ami->anchoredMinDistance = start_offset[i]; } - DEBUG_PRINTF("success %zu\n", *asize); + DEBUG_PRINTF("success %zu\n", atable.size()); return atable; } diff --git a/src/rose/rose_build_anchored.h b/src/rose/rose_build_anchored.h index dd59ca32..37d268ac 100644 --- a/src/rose/rose_build_anchored.h +++ b/src/rose/rose_build_anchored.h @@ -32,7 +32,7 @@ #include "ue2common.h" #include "rose_build_impl.h" #include "nfagraph/ng_holder.h" -#include "util/alloc.h" +#include "util/bytecode_ptr.h" #include #include @@ -59,10 +59,10 @@ std::vector buildAnchoredDfas(RoseBuildImpl &build, * Remap the literal final_ids used for raw_dfa reports to the program offsets * given in litPrograms. */ -aligned_unique_ptr +bytecode_ptr buildAnchoredMatcher(RoseBuildImpl &build, const std::vector &fragments, - std::vector &dfas, size_t *asize); + std::vector &dfas); u32 anchoredStateSize(const anchored_matcher_info &atable); diff --git a/src/rose/rose_build_bytecode.cpp b/src/rose/rose_build_bytecode.cpp index f7c8cf06..c0747d97 100644 --- a/src/rose/rose_build_bytecode.cpp +++ b/src/rose/rose_build_bytecode.cpp @@ -5824,10 +5824,9 @@ bytecode_ptr RoseBuildImpl::buildFinalEngine(u32 minWidth) { writeLeftInfo(bc.engine_blob, proto, leftInfoTable); // Build anchored matcher. - size_t asize = 0; - auto atable = buildAnchoredMatcher(*this, fragments, anchored_dfas, &asize); + auto atable = buildAnchoredMatcher(*this, fragments, anchored_dfas); if (atable) { - proto.amatcherOffset = bc.engine_blob.add(atable.get(), asize, 64); + proto.amatcherOffset = bc.engine_blob.add(atable); } // Build floating HWLM matcher. @@ -5952,7 +5951,7 @@ bytecode_ptr RoseBuildImpl::buildFinalEngine(u32 minWidth) { proto.initialGroups = getInitialGroups(); proto.floating_group_mask = fgroups; proto.totalNumLiterals = verify_u32(literal_info.size()); - proto.asize = verify_u32(asize); + proto.asize = verify_u32(atable.size()); proto.ematcherRegionSize = ematcher_region_size; proto.longLitStreamState = verify_u32(longLitStreamStateRequired);