]> git.eshelyaron.com Git - emacs.git/commitdiff
Minor weak hash table performance tweaks
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 21 Feb 2017 23:31:29 +0000 (15:31 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 21 Feb 2017 23:39:17 +0000 (15:39 -0800)
* src/fns.c (make_hash_table): Omit unnecessary assignment to
h->next_weak when the hash table is not weak.
(copy_hash_table): Put the copy next to the original in the
weak_hash_tables list, as this should have better locality
when scanning the weak hash tables.

src/fns.c

index 9668c885ab69105a5ab95d64c99f49af2b0c215f..0b694529c52c5580ef53d4467c3177b10d1bcb79 100644 (file)
--- a/src/fns.c
+++ b/src/fns.c
@@ -3756,9 +3756,7 @@ make_hash_table (struct hash_table_test test, EMACS_INT size,
   eassert (XHASH_TABLE (table) == h);
 
   /* Maybe add this hash table to the list of all weak hash tables.  */
-  if (NILP (h->weak))
-    h->next_weak = NULL;
-  else
+  if (! NILP (weak))
     {
       h->next_weak = weak_hash_tables;
       weak_hash_tables = h;
@@ -3788,8 +3786,8 @@ copy_hash_table (struct Lisp_Hash_Table *h1)
   /* Maybe add this hash table to the list of all weak hash tables.  */
   if (!NILP (h2->weak))
     {
-      h2->next_weak = weak_hash_tables;
-      weak_hash_tables = h2;
+      h2->next_weak = h1->next_weak;
+      h1->next_weak = h2;
     }
 
   return table;