Mercurial > hg > octave-lyh
diff src/symtab.h @ 9413:5cd879a0d8c4
speed-up function call by caching its name lookup
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Wed, 01 Jul 2009 10:42:58 +0200 |
parents | ed392e13c117 |
children | 2d73b19c5507 |
line wrap: on
line diff
--- a/src/symtab.h +++ b/src/symtab.h @@ -155,6 +155,8 @@ } }; + class fcn_info; + class symbol_record { @@ -194,7 +196,7 @@ symbol_record_rep (const std::string& nm, const octave_value& v, unsigned int sc) - : name (nm), value_stack (), storage_class (sc), count (1) + : name (nm), value_stack (), storage_class (sc), finfo (), count (1) { value_stack.push_back (v); } @@ -372,6 +374,8 @@ unsigned int storage_class; + fcn_info *finfo; + size_t count; private: @@ -1988,6 +1992,12 @@ } } + static fcn_info *get_fcn_info (const std::string& name) + { + fcn_table_iterator p = fcn_table.find (name); + return p != fcn_table.end () ? &p->second : 0; + } + octave_value do_find (const std::string& name, tree_argument_list *args, const string_vector& arg_names,