Small optimization to reduce unnecessary frame copying

This commit is contained in:
Jeremy 2024-02-11 15:59:56 -06:00
parent 36a16df075
commit cb92c9fdfa
No known key found for this signature in database
GPG Key ID: BE03111EB7ED6E2E

View File

@ -13,6 +13,7 @@
#include <cstdint> #include <cstdint>
#include <cstdio> #include <cstdio>
#include <functional> #include <functional>
#include <iterator>
#include <memory> #include <memory>
#include <mutex> #include <mutex>
#include <stdexcept> #include <stdexcept>
@ -1158,9 +1159,13 @@ namespace libdwarf {
// most recent call first // most recent call first
if(!entry.inlines.empty()) { if(!entry.inlines.empty()) {
// insert in reverse order // insert in reverse order
final_trace.insert(final_trace.end(), entry.inlines.rbegin(), entry.inlines.rend()); final_trace.insert(
final_trace.end(),
std::make_move_iterator(entry.inlines.rbegin()),
std::make_move_iterator(entry.inlines.rend())
);
} }
final_trace.push_back(entry.frame); final_trace.push_back(std::move(entry.frame));
if(!entry.inlines.empty()) { if(!entry.inlines.empty()) {
// rotate line info due to quirk of how dwarf stores this stuff // rotate line info due to quirk of how dwarf stores this stuff
// inclusive range // inclusive range