Mercurial > octave
changeset 27203:79065f9d5553
eliminate direct access to call stack in load-save functions
* pt-eval.h, pt-eval.cc (tree_evaluator::glob_symbol_info,
tree_evaluator::regexp_symbol_info, tree_evaluator::get_symbol_info,
tree_evaluator::top_scope_symbol_info): New functions.
* load-save.cc (load_save_system::save_vars,
load_save_system::dump_octave_core):
Eliminate direct access to call stack.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 01 Apr 2019 18:00:15 +0000 |
parents | 23962b243bad |
children | 9a3e92d02a03 |
files | libinterp/corefcn/load-save.cc libinterp/parse-tree/pt-eval.cc libinterp/parse-tree/pt-eval.h |
diffstat | 3 files changed, 37 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/load-save.cc Mon Apr 01 17:47:24 2019 +0000 +++ b/libinterp/corefcn/load-save.cc Mon Apr 01 18:00:15 2019 +0000 @@ -906,9 +906,9 @@ const load_save_format& fmt, bool save_as_floats) { - call_stack& cs = m_interpreter.get_call_stack (); + tree_evaluator& tw = m_interpreter.get_evaluator (); - symbol_info_list syminfo_list = cs.glob_symbol_info (pattern); + symbol_info_list syminfo_list = tw.glob_symbol_info (pattern); size_t saved = 0; @@ -1024,9 +1024,9 @@ { write_header (os, fmt); - call_stack& cs = m_interpreter.get_call_stack (); + tree_evaluator& tw = m_interpreter.get_evaluator (); - symbol_info_list syminfo_list = cs.top_scope_symbol_info (); + symbol_info_list syminfo_list = tw.top_scope_symbol_info (); double save_mem_size = 0;
--- a/libinterp/parse-tree/pt-eval.cc Mon Apr 01 17:47:24 2019 +0000 +++ b/libinterp/parse-tree/pt-eval.cc Mon Apr 01 18:00:15 2019 +0000 @@ -4460,6 +4460,30 @@ "max_recursion_depth", 0); } + symbol_info_list + tree_evaluator::glob_symbol_info (const std::string& pattern) const + { + return m_call_stack.glob_symbol_info (pattern); + } + + symbol_info_list + tree_evaluator::regexp_symbol_info (const std::string& pattern) const + { + return m_call_stack.regexp_symbol_info (pattern); + } + + symbol_info_list + tree_evaluator::get_symbol_info (void) + { + return m_call_stack.get_symbol_info (); + } + + symbol_info_list + tree_evaluator::top_scope_symbol_info (void) const + { + return m_call_stack.top_scope_symbol_info (); + } + octave_map tree_evaluator::get_autoload_map (void) const { Cell func_names (dim_vector (m_autoload_map.size (), 1));
--- a/libinterp/parse-tree/pt-eval.h Mon Apr 01 17:47:24 2019 +0000 +++ b/libinterp/parse-tree/pt-eval.h Mon Apr 01 18:00:15 2019 +0000 @@ -42,6 +42,7 @@ namespace octave { + class symbol_info_list; class symbol_scope; class tree_decl_elt; class tree_expression; @@ -563,6 +564,14 @@ bool in_user_code (void) const; + symbol_info_list glob_symbol_info (const std::string& pattern) const; + + symbol_info_list regexp_symbol_info (const std::string& pattern) const; + + symbol_info_list get_symbol_info (void); + + symbol_info_list top_scope_symbol_info (void) const; + octave_map get_autoload_map (void) const; std::string lookup_autoload (const std::string& nm) const;