aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
authorStefan Monnier2012-11-08 14:12:23 -0500
committerStefan Monnier2012-11-08 14:12:23 -0500
commitb7432bb20f48902994bee522bea15acdb0c0e209 (patch)
tree940e242625e16ade096c4144d728c56107aa7005 /src/alloc.c
parent880027430c5580abf612a82273bd49b75b9fb73c (diff)
downloademacs-b7432bb20f48902994bee522bea15acdb0c0e209.tar.gz
emacs-b7432bb20f48902994bee522bea15acdb0c0e209.zip
Use ad-hoc comparison function for the profiler's hash-tables.
* src/profiler.c (Qprofiler_backtrace_equal, hashtest_profiler): New vars. (make_log): Use them. (handle_profiler_signal): Don't inhibit quit any longer since we don't call Fequal any more. (Ffunction_equal): New function. (cmpfn_profiler, hashfn_profiler): New functions. (syms_of_profiler): Initialize them. * src/lisp.h (struct hash_table_test): New struct. (struct Lisp_Hash_Table): Use it. * src/alloc.c (mark_object): Mark hash_table_test fields of hash tables. * src/fns.c (make_hash_table): Take a struct to describe the test. (cmpfn_eql, cmpfn_equal, cmpfn_user_defined, hashfn_eq, hashfn_eql) (hashfn_equal, hashfn_user_defined): Adjust to new calling convention. (hash_lookup, hash_remove_from_table): Move assertion checking of hashfn result here. Check hash-equality before calling cmpfn. (Fmake_hash_table): Adjust call to make_hash_table. (hashtest_eq, hashtest_eql, hashtest_equal): New structs. (syms_of_fns): Initialize them. * src/emacs.c (main): Move syms_of_fns earlier. * src/xterm.c (syms_of_xterm): * src/category.c (hash_get_category_set): Adjust call to make_hash_table. * src/print.c (print_object): Adjust to new hash-table struct. * src/composite.c (composition_gstring_put_cache): Adjust to new hashfn.
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 557c68ca5af..808557dd70f 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -5809,6 +5809,9 @@ mark_object (Lisp_Object arg)
5809 struct Lisp_Hash_Table *h = (struct Lisp_Hash_Table *) ptr; 5809 struct Lisp_Hash_Table *h = (struct Lisp_Hash_Table *) ptr;
5810 5810
5811 mark_vectorlike (ptr); 5811 mark_vectorlike (ptr);
5812 mark_object (h->test.name);
5813 mark_object (h->test.user_hash_function);
5814 mark_object (h->test.user_cmp_function);
5812 /* If hash table is not weak, mark all keys and values. 5815 /* If hash table is not weak, mark all keys and values.
5813 For weak tables, mark only the vector. */ 5816 For weak tables, mark only the vector. */
5814 if (NILP (h->weak)) 5817 if (NILP (h->weak))