Commit f0861b1a authored by Paul's avatar Paul
Browse files

Reserve space

parent cf3dda78
...@@ -79,6 +79,7 @@ struct program ...@@ -79,6 +79,7 @@ struct program
bool has_instruction(instruction_ref ins) const; bool has_instruction(instruction_ref ins) const;
std::size_t size() const;
instruction_ref begin() const; instruction_ref begin() const;
instruction_ref end() const; instruction_ref end() const;
......
...@@ -220,6 +220,7 @@ bool program::has_instruction(instruction_ref ins) const ...@@ -220,6 +220,7 @@ bool program::has_instruction(instruction_ref ins) const
}) != impl->instructions.end(); }) != impl->instructions.end();
} }
std::size_t program::size() const { return impl->instructions.size(); }
instruction_ref program::begin() const { return impl->instructions.begin(); } instruction_ref program::begin() const { return impl->instructions.begin(); }
instruction_ref program::end() const { return impl->instructions.end(); } instruction_ref program::end() const { return impl->instructions.end(); }
...@@ -276,7 +277,10 @@ argument generic_eval(const program& p, ...@@ -276,7 +277,10 @@ argument generic_eval(const program& p,
{ {
assert(p.validate() == p.end()); assert(p.validate() == p.end());
std::unordered_map<const instruction*, argument> results; std::unordered_map<const instruction*, argument> results;
results.reserve(p.size());
argument result; argument result;
std::vector<argument> values;
values.reserve(16);
for(auto& ins : p) for(auto& ins : p)
{ {
if(ins.op.name() == "@literal") if(ins.op.name() == "@literal")
...@@ -293,7 +297,7 @@ argument generic_eval(const program& p, ...@@ -293,7 +297,7 @@ argument generic_eval(const program& p,
} }
else else
{ {
std::vector<argument> values(ins.arguments.size()); values.resize(ins.arguments.size());
std::transform(ins.arguments.begin(), std::transform(ins.arguments.begin(),
ins.arguments.end(), ins.arguments.end(),
values.begin(), values.begin(),
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment