From 17821be1e2883051bde941ed5411483c597aaac0 Mon Sep 17 00:00:00 2001 From: Jason Turner Date: Tue, 3 May 2016 08:51:44 -0600 Subject: [PATCH] Reduce shared_ptr copies during dispatch --- include/chaiscript/dispatchkit/dispatchkit.hpp | 4 ++-- include/chaiscript/language/chaiscript_eval.hpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/chaiscript/dispatchkit/dispatchkit.hpp b/include/chaiscript/dispatchkit/dispatchkit.hpp index 80bbf36..b94152e 100644 --- a/include/chaiscript/dispatchkit/dispatchkit.hpp +++ b/include/chaiscript/dispatchkit/dispatchkit.hpp @@ -935,14 +935,14 @@ namespace chaiscript This_Foist fi(*this, l_params.front()); - auto func = boxed_cast>(bv); + auto func = boxed_cast(bv); try { return (*func)({l_params.begin() + l_num_params, l_params.end()}, l_conversions); } catch (const chaiscript::exception::bad_boxed_cast &) { } catch (const chaiscript::exception::arity_error &) { } catch (const chaiscript::exception::guard_error &) { } - throw chaiscript::exception::dispatch_error({l_params.begin() + l_num_params, l_params.end()}, std::vector{func}); + throw chaiscript::exception::dispatch_error({l_params.begin() + l_num_params, l_params.end()}, std::vector{boxed_cast(bv)}); } else { return bv; } diff --git a/include/chaiscript/language/chaiscript_eval.hpp b/include/chaiscript/language/chaiscript_eval.hpp index 0464e4d..753389d 100644 --- a/include/chaiscript/language/chaiscript_eval.hpp +++ b/include/chaiscript/language/chaiscript_eval.hpp @@ -244,7 +244,7 @@ namespace chaiscript Boxed_Value fn(this->children[0]->eval(t_ss)); try { - return (*t_ss->boxed_cast(fn))(params, t_ss.conversions()); + return (*t_ss->boxed_cast(fn))(params, t_ss.conversions()); } catch(const exception::dispatch_error &e){ throw exception::eval_error(std::string(e.what()) + " with function '" + this->children[0]->text + "'", e.parameters, e.functions, false, *t_ss);