]> git.ipfire.org Git - thirdparty/vectorscan.git/commitdiff
groupByFragment: make fewer string copies
authorJustin Viiret <justin.viiret@intel.com>
Fri, 4 Aug 2017 00:06:20 +0000 (10:06 +1000)
committerMatthew Barr <matthew.barr@intel.com>
Mon, 21 Aug 2017 01:24:52 +0000 (11:24 +1000)
src/rose/rose_build_bytecode.cpp

index b0de73bca6246b0db0fbf8a63e89c800dd032b2f..efc591bdd0594e24e7cee506fb45d46583188e13 100644 (file)
@@ -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