[gdb/cli] Skip string copy in source_cache::ensure
authorTom de Vries <tdevries@suse.de>
Tue, 17 Oct 2023 09:38:06 +0000 (11:38 +0200)
committerTom de Vries <tdevries@suse.de>
Tue, 17 Oct 2023 09:38:06 +0000 (11:38 +0200)
In function source_cache::ensure we have:
...
        std::ostringstream output;
      ...
      contents = output.str ();
...
The last line causes an unnecessary string copy.

C++20 allows us to skip it, like this:
...
      contents = std::move (output).str ();
...

Use the more efficient solution.

Tested on x86_64-linux.

Reviewed-By: Lancelot Six <lancelot.six@amd.com>
gdb/source-cache.c

index 77b357cb42b80be79bdb2713ded7428f67bee153..ae02d2516d9601cb691c60e0d2f0aa756e89d624 100644 (file)
@@ -252,7 +252,7 @@ source_cache::ensure (struct symtab *s)
              std::istringstream input (contents);
              std::ostringstream output;
              highlighter->highlight (input, output, lang_name, fullname);
-             contents = output.str ();
+             contents = std::move (output).str ();
              already_styled = true;
            }
          catch (...)