Eliminate extra dynamic allocation in the Stack
This commit is contained in:
parent
5986531bba
commit
5619f2602d
@ -389,8 +389,7 @@ namespace chaiscript
|
||||
public:
|
||||
typedef std::map<std::string, chaiscript::Type_Info> Type_Name_Map;
|
||||
typedef std::map<std::string, Boxed_Value> Scope;
|
||||
typedef std::deque<Scope> StackData;
|
||||
typedef std::shared_ptr<StackData> Stack;
|
||||
typedef std::vector<Scope> StackData;
|
||||
|
||||
struct State
|
||||
{
|
||||
@ -528,7 +527,7 @@ namespace chaiscript
|
||||
void new_stack()
|
||||
{
|
||||
// add a new Stack with 1 element
|
||||
m_stack_holder->stacks.emplace_back(std::make_shared<StackData>(1));
|
||||
m_stack_holder->stacks.emplace_back(1);
|
||||
}
|
||||
|
||||
void pop_stack()
|
||||
@ -536,12 +535,6 @@ namespace chaiscript
|
||||
m_stack_holder->stacks.pop_back();
|
||||
}
|
||||
|
||||
/// \returns the current stack
|
||||
Stack get_stack() const
|
||||
{
|
||||
return m_stack_holder->stacks.back();
|
||||
}
|
||||
|
||||
/// Searches the current stack for an object of the given name
|
||||
/// includes a special overload for the _ place holder object to
|
||||
/// ensure that it is always in scope.
|
||||
@ -718,7 +711,7 @@ namespace chaiscript
|
||||
Stack_Holder &s = *m_stack_holder;
|
||||
|
||||
// We don't want the current context, but one up if it exists
|
||||
StackData &stack = (s.stacks.size()==1)?(*(s.stacks.back())):(*s.stacks[s.stacks.size()-2]);
|
||||
StackData &stack = (s.stacks.size()==1)?(s.stacks.back()):(s.stacks[s.stacks.size()-2]);
|
||||
|
||||
std::map<std::string, Boxed_Value> retval;
|
||||
|
||||
@ -966,7 +959,7 @@ namespace chaiscript
|
||||
/// make const/non const versions
|
||||
StackData &get_stack_data() const
|
||||
{
|
||||
return *(m_stack_holder->stacks.back());
|
||||
return m_stack_holder->stacks.back();
|
||||
}
|
||||
|
||||
const std::map<std::string, Proxy_Function> &get_function_objects_int() const
|
||||
@ -1147,10 +1140,10 @@ namespace chaiscript
|
||||
Stack_Holder()
|
||||
: call_depth(0)
|
||||
{
|
||||
stacks.emplace_back(std::make_shared<StackData>(1));
|
||||
stacks.emplace_back(1);
|
||||
}
|
||||
|
||||
std::deque<Stack> stacks;
|
||||
std::deque<StackData> stacks;
|
||||
|
||||
std::list<Boxed_Value> call_params;
|
||||
int call_depth;
|
||||
|
Loading…
x
Reference in New Issue
Block a user