summaryrefslogtreecommitdiff
path: root/function.cpp
diff options
context:
space:
mode:
authorBrian Potchik <brian@vector35.com>2018-01-14 03:42:04 -0500
committerBrian Potchik <brian@vector35.com>2018-01-14 03:42:04 -0500
commit0cc77206c79257d49013c3a3ed1bf889c85b10d1 (patch)
tree7c5ddd2f6e7d4c84e622064c74ca25873f82b97b /function.cpp
parent4866de9b9f0ef32dfa568aa38faafdfd4def4638 (diff)
Container Memory Reservations.
Diffstat (limited to 'function.cpp')
-rw-r--r--function.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/function.cpp b/function.cpp
index 1226e399..cb4377b2 100644
--- a/function.cpp
+++ b/function.cpp
@@ -174,6 +174,7 @@ vector<Ref<BasicBlock>> Function::GetBasicBlocks() const
BNBasicBlock** blocks = BNGetFunctionBasicBlockList(m_object, &count);
vector<Ref<BasicBlock>> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
result.push_back(new BasicBlock(BNNewBasicBlockReference(blocks[i])));
@@ -379,6 +380,7 @@ vector<StackVariableReference> Function::GetStackVariablesReferencedByInstructio
BNStackVariableReference* refs = BNGetStackVariablesReferencedByInstruction(m_object, arch->GetObject(), addr, &count);
vector<StackVariableReference> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
{
StackVariableReference ref;
@@ -502,10 +504,9 @@ Confidence<vector<Variable>> Function::GetParameterVariables() const
{
BNParameterVariablesWithConfidence vars = BNGetFunctionParameterVariables(m_object);
vector<Variable> varList;
+ varList.reserve(vars.count);
for (size_t i = 0; i < vars.count; i++)
- {
varList.emplace_back(vars.vars[i].type, vars.vars[i].index, vars.vars[i].storage);
- }
Confidence<vector<Variable>> result(varList, vars.confidence);
BNFreeParameterVariables(&vars);
return result;
@@ -897,6 +898,7 @@ vector<IndirectBranchInfo> Function::GetIndirectBranches()
BNIndirectBranchInfo* branches = BNGetIndirectBranches(m_object, &count);
vector<IndirectBranchInfo> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
{
IndirectBranchInfo b;
@@ -919,6 +921,7 @@ vector<IndirectBranchInfo> Function::GetIndirectBranchesAt(Architecture* arch, u
BNIndirectBranchInfo* branches = BNGetIndirectBranchesAt(m_object, arch->GetObject(), addr, &count);
vector<IndirectBranchInfo> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
{
IndirectBranchInfo b;
@@ -941,9 +944,11 @@ vector<vector<InstructionTextToken>> Function::GetBlockAnnotations(Architecture*
BNInstructionTextLine* lines = BNGetFunctionBlockAnnotations(m_object, arch->GetObject(), addr, &count);
vector<vector<InstructionTextToken>> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
{
vector<InstructionTextToken> line;
+ line.reserve(lines[i].count);
for (size_t j = 0; j < lines[i].count; j++)
{
InstructionTextToken token;
@@ -1155,10 +1160,12 @@ vector<DisassemblyTextLine> Function::GetTypeTokens(DisassemblySettings* setting
settings ? settings->GetObject() : nullptr, &count);
vector<DisassemblyTextLine> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
{
DisassemblyTextLine line;
line.addr = lines[i].addr;
+ line.tokens.reserve(lines[i].count);
for (size_t j = 0; j < lines[i].count; j++)
{
InstructionTextToken token;