changeset 27207:242e66e014d9

eliminate direct access to call stack in ov-usr-fcn.cc * ov-usr-fcn.cc (octave_user_function::restore_warning_states, Fnargin, Fnargout, Fisargout): Eliminate direct access to call stack.
author John W. Eaton <jwe@octave.org>
date Mon, 01 Apr 2019 20:28:53 +0000
parents 4e4a9d7b436e
children 5b40cf4896f0
files libinterp/octave-value/ov-usr-fcn.cc
diffstat 1 files changed, 9 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/octave-value/ov-usr-fcn.cc	Mon Apr 01 20:25:34 2019 +0000
+++ b/libinterp/octave-value/ov-usr-fcn.cc	Mon Apr 01 20:28:53 2019 +0000
@@ -31,7 +31,6 @@
 #include "str-vec.h"
 
 #include "builtin-defun-decls.h"
-#include "call-stack.h"
 #include "defaults.h"
 #include "Cell.h"
 #include "defun.h"
@@ -594,10 +593,10 @@
   octave::interpreter& interp
     = octave::__get_interpreter__ ("octave_user_function::restore_warning_states");
 
-  octave::call_stack& cs = interp.get_call_stack ();
+  octave::tree_evaluator& tw = interp.get_evaluator ();
 
   octave_value val
-    = cs.get_auto_fcn_var (octave::stack_frame::SAVED_WARNING_STATES);
+    = tw.get_auto_fcn_var (octave::stack_frame::SAVED_WARNING_STATES);
 
   if (val.is_defined ())
     {
@@ -695,9 +694,9 @@
     }
   else
     {
-      octave::call_stack& cs = interp.get_call_stack ();
+      octave::tree_evaluator& tw = interp.get_evaluator ();
 
-      retval = cs.get_auto_fcn_var (octave::stack_frame::NARGIN);
+      retval = tw.get_auto_fcn_var (octave::stack_frame::NARGIN);
 
       if (retval.is_undefined ())
         retval = 0;
@@ -822,9 +821,9 @@
       if (interp.at_top_level ())
         error ("nargout: invalid call at top level");
 
-      octave::call_stack& cs = interp.get_call_stack ();
+      octave::tree_evaluator& tw = interp.get_evaluator ();
 
-      retval = cs.get_auto_fcn_var (octave::stack_frame::NARGOUT);
+      retval = tw.get_auto_fcn_var (octave::stack_frame::NARGOUT);
 
       if (retval.is_undefined ())
         retval = 0;
@@ -894,17 +893,17 @@
   if (interp.at_top_level ())
     error ("isargout: invalid call at top level");
 
-  octave::call_stack& cs = interp.get_call_stack ();
+  octave::tree_evaluator& tw = interp.get_evaluator ();
 
   octave_value tmp;
 
   int nargout1 = 0;
-  tmp = cs.get_auto_fcn_var (octave::stack_frame::NARGOUT);
+  tmp = tw.get_auto_fcn_var (octave::stack_frame::NARGOUT);
   if (tmp.is_defined ())
     nargout1 = tmp.int_value ();
 
   Matrix ignored;
-  tmp = cs.get_auto_fcn_var (octave::stack_frame::IGNORED);
+  tmp = tw.get_auto_fcn_var (octave::stack_frame::IGNORED);
   if (tmp.is_defined ())
     ignored = tmp.matrix_value ();