Mercurial > octave
changeset 27234:279074d7a3b9
eliminate unused tree_evaluator::reset function
* pt-eval.h, pt-eval.cc (tree_evaluator::reset): Delete unused function.
(tree_evaluator::evaluate_internal): New function. Use unwind_protect
to ensure nargout_stack is properly restored.
(tree_evaluator::evaluate): Use new evaluate_internal function.
Reset m_result_type before returning.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 11 Jul 2019 14:21:37 -0400 |
parents | fc668ac9ce7c |
children | e12571df6466 |
files | libinterp/parse-tree/pt-eval.cc libinterp/parse-tree/pt-eval.h |
diffstat | 2 files changed, 20 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/parse-tree/pt-eval.cc Thu Jul 11 14:16:08 2019 -0400 +++ b/libinterp/parse-tree/pt-eval.cc Thu Jul 11 14:21:37 2019 -0400 @@ -296,23 +296,6 @@ return m_call_stack.at_top_level (); } - void - tree_evaluator::reset (void) - { - m_statement_context = SC_OTHER; - m_result_type = RT_UNDEFINED; - m_expr_result_value = octave_value (); - m_expr_result_value_list = octave_value_list (); - m_lvalue_list_stack.clear (); - m_nargout_stack.clear (); - - while (! m_debugger_stack.empty ()) - { - delete m_debugger_stack.top (); - m_debugger_stack.pop (); - } - } - int tree_evaluator::repl (bool interactive) { int retval = 0; @@ -4398,6 +4381,18 @@ } void + tree_evaluator::evaluate_internal (tree_expression *expr, int nargout) + { + unwind_protect frame; + + m_nargout_stack.push (nargout); + + frame.add_method (m_nargout_stack, &value_stack<int>::pop); + + expr->accept (*this); + } + + void tree_evaluator::do_breakpoint (tree_statement& stmt) { do_breakpoint (stmt.is_active_breakpoint (*this),
--- a/libinterp/parse-tree/pt-eval.h Thu Jul 11 14:16:08 2019 -0400 +++ b/libinterp/parse-tree/pt-eval.h Thu Jul 11 14:21:37 2019 -0400 @@ -156,8 +156,6 @@ bool at_top_level (void) const; - void reset (void); - int repl (bool interactive); std::string mfilename (const std::string& opt = "") const; @@ -334,11 +332,7 @@ { octave_value retval; - m_nargout_stack.push (nargout); - - expr->accept (*this); - - m_nargout_stack.pop (); + evaluate_internal (expr, nargout); switch (m_result_type) { @@ -358,6 +352,8 @@ break; } + m_result_type = RT_UNDEFINED; + return retval; } @@ -365,11 +361,7 @@ { octave_value_list retval; - m_nargout_stack.push (nargout); - - expr->accept (*this); - - m_nargout_stack.pop (); + evaluate_internal (expr, nargout); switch (m_result_type) { @@ -388,6 +380,8 @@ break; } + m_result_type = RT_UNDEFINED; + return retval; } @@ -797,6 +791,8 @@ bool maybe_push_echo_state_cleanup (void); + void evaluate_internal (tree_expression *expr, int nargout); + void do_breakpoint (tree_statement& stmt); void do_breakpoint (bool is_breakpoint,