From: Justin Viiret Date: Mon, 13 Feb 2017 04:54:16 +0000 (+1100) Subject: rose: write fragment ids into literal_info X-Git-Tag: v4.5.0^2~240 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8b25d834157a4ae4ef6da86610dfca6bba498fa5;p=thirdparty%2Fvectorscan.git rose: write fragment ids into literal_info --- diff --git a/src/rose/rose_build_bytecode.cpp b/src/rose/rose_build_bytecode.cpp index 197ceb4a..a50ebb8e 100644 --- a/src/rose/rose_build_bytecode.cpp +++ b/src/rose/rose_build_bytecode.cpp @@ -5409,6 +5409,15 @@ aligned_unique_ptr RoseBuildImpl::buildFinalEngine(u32 minWidth) { allocateFinalLiteralId(*this, bc); final_to_frag_map = groupByFragment(*this, bc); + // Write the fragment IDs into the literal_info structures. + for (auto &info : literal_info) { + if (info.final_id == MO_INVALID_IDX) { + continue; + } + assert(contains(final_to_frag_map, info.final_id)); + info.fragment_id = final_to_frag_map.at(info.final_id).fragment_id; + } + auto anchored_dfas = buildAnchoredDfas(*this); bc.floatingMinLiteralMatchOffset = diff --git a/src/rose/rose_build_impl.h b/src/rose/rose_build_impl.h index addd703c..bf588553 100644 --- a/src/rose/rose_build_impl.h +++ b/src/rose/rose_build_impl.h @@ -264,7 +264,8 @@ struct rose_literal_info { ue2::flat_set vertices; rose_group group_mask = 0; u32 undelayed_id = MO_INVALID_IDX; - u32 final_id = MO_INVALID_IDX; /* id reported by fdr */ + u32 final_id = MO_INVALID_IDX; // TODO: remove + u32 fragment_id = MO_INVALID_IDX; //!< ID corresponding to literal prog. bool squash_group = false; bool requires_benefits = false; };