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,