summaryrefslogtreecommitdiff
path: root/src/profiler.c
diff options
context:
space:
mode:
authorMattias EngdegÄrd <mattiase@acm.org>2023-11-02 17:05:26 +0100
committerMattias EngdegÄrd <mattiase@acm.org>2024-01-13 20:50:38 +0100
commit7d93a0147a14e14d6964bf93ba11cf494b9d49fd (patch)
tree2cce6ad4b4476616e0be3dc1fcf5f68d2ae7692d /src/profiler.c
parent0a998938ca1b7e5e6f09d14b4a62ec7089be2af6 (diff)
Share hash table test structs
This saves several words in the hash table object at the cost of an indirection at runtime. This seems to be a gain in overall performance. FIXME: We cache hash test objects in a rather clumsy way. A better solution is sought. * src/lisp.h (struct Lisp_Hash_Table): Use a pointer to the test struct. All references adapted. * src/alloc.c (garbage_collect): * src/fns.c (struct hash_table_user_test, hash_table_user_tests) (mark_fns, get_hash_table_user_test): New state for caching test structs, and functions managing it.
Diffstat (limited to 'src/profiler.c')
-rw-r--r--src/profiler.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/profiler.c b/src/profiler.c
index 06ffecf41e3..5a6a8b48f6b 100644
--- a/src/profiler.c
+++ b/src/profiler.c
@@ -563,7 +563,7 @@ export_log (struct profiler_log *plog)
which is more discriminating than the `function-equal' used by
the log but close enough, and will never confuse two distinct
keys in the log. */
- Lisp_Object h = make_hash_table (hashtest_equal, DEFAULT_HASH_SIZE,
+ Lisp_Object h = make_hash_table (&hashtest_equal, DEFAULT_HASH_SIZE,
Weak_None, false);
for (int i = 0; i < log->size; i++)
{