aboutsummaryrefslogtreecommitdiffstats
path: root/src/bytecode.c
diff options
context:
space:
mode:
authorMattias EngdegÄrd2023-11-02 17:05:26 +0100
committerMattias EngdegÄrd2024-01-13 20:50:38 +0100
commit7d93a0147a14e14d6964bf93ba11cf494b9d49fd (patch)
tree2cce6ad4b4476616e0be3dc1fcf5f68d2ae7692d /src/bytecode.c
parent0a998938ca1b7e5e6f09d14b4a62ec7089be2af6 (diff)
downloademacs-7d93a0147a14e14d6964bf93ba11cf494b9d49fd.tar.gz
emacs-7d93a0147a14e14d6964bf93ba11cf494b9d49fd.zip
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/bytecode.c')
-rw-r--r--src/bytecode.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/bytecode.c b/src/bytecode.c
index a0f02d518b7..ed6e2b34e77 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -1743,7 +1743,7 @@ exec_byte_code (Lisp_Object fun, ptrdiff_t args_template,
1743 1743
1744 /* h->count is a faster approximation for HASH_TABLE_SIZE (h) 1744 /* h->count is a faster approximation for HASH_TABLE_SIZE (h)
1745 here. */ 1745 here. */
1746 if (h->count <= 5 && !h->test.cmpfn) 1746 if (h->count <= 5 && !h->test->cmpfn)
1747 { /* Do a linear search if there are not many cases 1747 { /* Do a linear search if there are not many cases
1748 FIXME: 5 is arbitrarily chosen. */ 1748 FIXME: 5 is arbitrarily chosen. */
1749 for (i = h->count; 0 <= --i; ) 1749 for (i = h->count; 0 <= --i; )