From: Justin Viiret Date: Fri, 4 Aug 2017 00:06:20 +0000 (+1000) Subject: groupByFragment: make fewer string copies X-Git-Tag: v4.6.0^2~49 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ba1df6412bee93e6366125bf0a2dd678e9a905eb;p=thirdparty%2Fvectorscan.git groupByFragment: make fewer string copies --- diff --git a/src/rose/rose_build_bytecode.cpp b/src/rose/rose_build_bytecode.cpp index b0de73bc..efc591bd 100644 --- a/src/rose/rose_build_bytecode.cpp +++ b/src/rose/rose_build_bytecode.cpp @@ -2767,17 +2767,13 @@ bool isUsedLiteral(const RoseBuildImpl &build, u32 lit_id) { } static -rose_literal_id getFragment(const rose_literal_id &lit) { - if (lit.s.length() <= ROSE_SHORT_LITERAL_LEN_MAX) { - DEBUG_PRINTF("whole lit is frag\n"); - return lit; +rose_literal_id getFragment(rose_literal_id lit) { + if (lit.s.length() > ROSE_SHORT_LITERAL_LEN_MAX) { + // Trim to last ROSE_SHORT_LITERAL_LEN_MAX bytes. + lit.s.erase(0, lit.s.length() - ROSE_SHORT_LITERAL_LEN_MAX); } - - rose_literal_id frag = lit; - frag.s = frag.s.substr(frag.s.length() - ROSE_SHORT_LITERAL_LEN_MAX); - - DEBUG_PRINTF("fragment: %s\n", dumpString(frag.s).c_str()); - return frag; + DEBUG_PRINTF("fragment: %s\n", dumpString(lit.s).c_str()); + return lit; } static