diff options
| author | Stefan Monnier | 2012-11-08 14:12:23 -0500 |
|---|---|---|
| committer | Stefan Monnier | 2012-11-08 14:12:23 -0500 |
| commit | b7432bb20f48902994bee522bea15acdb0c0e209 (patch) | |
| tree | 940e242625e16ade096c4144d728c56107aa7005 /src/alloc.c | |
| parent | 880027430c5580abf612a82273bd49b75b9fb73c (diff) | |
| download | emacs-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.c | 3 |
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)) |