diff --git a/src/compiler/compiler.cpp b/src/compiler/compiler.cpp index 47bf514c..b2deae32 100644 --- a/src/compiler/compiler.cpp +++ b/src/compiler/compiler.cpp @@ -56,7 +56,7 @@ #include "parser/utf8_validate.h" #include "rose/rose_build.h" #include "som/slot_manager_dump.h" -#include "util/alloc.h" +#include "util/bytecode_ptr.h" #include "util/compile_error.h" #include "util/target_info.h" #include "util/verify_types.h" @@ -288,7 +288,7 @@ void addExpression(NG &ng, unsigned index, const char *expression, } static -aligned_unique_ptr generateRoseEngine(NG &ng) { +bytecode_ptr generateRoseEngine(NG &ng) { const u32 minWidth = ng.minWidth.is_finite() ? verify_u32(ng.minWidth) : ROSE_BOUND_INF; auto rose = ng.rose->buildRose(minWidth); diff --git a/src/rose/rose_build.h b/src/rose/rose_build.h index 2949fcc9..a14ea8ff 100644 --- a/src/rose/rose_build.h +++ b/src/rose/rose_build.h @@ -40,7 +40,7 @@ #include "ue2common.h" #include "rose_common.h" #include "rose_in_graph.h" -#include "util/alloc.h" +#include "util/bytecode_ptr.h" #include "util/charreach.h" #include "util/noncopyable.h" #include "util/ue2_containers.h" @@ -113,7 +113,7 @@ public: bool eod) = 0; /** \brief Construct a runtime implementation. */ - virtual ue2::aligned_unique_ptr buildRose(u32 minWidth) = 0; + virtual bytecode_ptr buildRose(u32 minWidth) = 0; virtual std::unique_ptr generateDedupeAux() const = 0; diff --git a/src/rose/rose_build_bytecode.cpp b/src/rose/rose_build_bytecode.cpp index b9df1af6..4447646a 100644 --- a/src/rose/rose_build_bytecode.cpp +++ b/src/rose/rose_build_bytecode.cpp @@ -5589,8 +5589,8 @@ u32 writeEagerQueueIter(const set &eager, u32 leftfixBeginQueue, } static -aligned_unique_ptr addSmallWriteEngine(const RoseBuildImpl &build, - aligned_unique_ptr rose) { +bytecode_ptr addSmallWriteEngine(const RoseBuildImpl &build, + bytecode_ptr rose) { assert(rose); if (roseIsPureLiteral(rose.get())) { @@ -5612,7 +5612,7 @@ aligned_unique_ptr addSmallWriteEngine(const RoseBuildImpl &build, const size_t smwrOffset = ROUNDUP_CL(mainSize); const size_t newSize = smwrOffset + smallWriteSize; - auto rose2 = aligned_zmalloc_unique(newSize); + auto rose2 = make_bytecode_ptr(newSize, 64); char *ptr = (char *)rose2.get(); memcpy(ptr, rose.get(), mainSize); memcpy(ptr + smwrOffset, smwr_engine.get(), smallWriteSize); @@ -5709,7 +5709,7 @@ map makeLeftQueueMap(const RoseGraph &g, return lqm; } -aligned_unique_ptr RoseBuildImpl::buildFinalEngine(u32 minWidth) { +bytecode_ptr RoseBuildImpl::buildFinalEngine(u32 minWidth) { // We keep all our offsets, counts etc. in a prototype RoseEngine which we // will copy into the real one once it is allocated: we can't do this // until we know how big it will be. @@ -5963,8 +5963,8 @@ aligned_unique_ptr RoseBuildImpl::buildFinalEngine(u32 minWidth) { proto.size = currOffset; - // Time to allocate the real RoseEngine structure. - auto engine = aligned_zmalloc_unique(currOffset); + // Time to allocate the real RoseEngine structure, at cacheline alignment. + auto engine = make_bytecode_ptr(currOffset, 64); assert(engine); // will have thrown bad_alloc otherwise. // Copy in our prototype engine data. diff --git a/src/rose/rose_build_compile.cpp b/src/rose/rose_build_compile.cpp index 791a68ab..c0096a97 100644 --- a/src/rose/rose_build_compile.cpp +++ b/src/rose/rose_build_compile.cpp @@ -1668,7 +1668,7 @@ bool roleOffsetsAreValid(const RoseGraph &g) { } #endif // NDEBUG -aligned_unique_ptr RoseBuildImpl::buildRose(u32 minWidth) { +bytecode_ptr RoseBuildImpl::buildRose(u32 minWidth) { dumpRoseGraph(*this, "rose_early.dot"); // Early check for Rose implementability. diff --git a/src/rose/rose_build_impl.h b/src/rose/rose_build_impl.h index 93c0f18c..21db7a8e 100644 --- a/src/rose/rose_build_impl.h +++ b/src/rose/rose_build_impl.h @@ -38,7 +38,7 @@ #include "nfa/nfa_internal.h" #include "nfagraph/ng_holder.h" #include "nfagraph/ng_revacc.h" -#include "util/alloc.h" +#include "util/bytecode_ptr.h" #include "util/order_check.h" #include "util/queue_index_factory.h" #include "util/ue2_containers.h" @@ -471,8 +471,8 @@ public: bool eod) override; // Construct a runtime implementation. - aligned_unique_ptr buildRose(u32 minWidth) override; - aligned_unique_ptr buildFinalEngine(u32 minWidth); + bytecode_ptr buildRose(u32 minWidth) override; + bytecode_ptr buildFinalEngine(u32 minWidth); void setSom() override { hasSom = true; }