emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

scratch/hash-table-perf 9141966be51 09/37: ; * src/alloc.c (purecopy_has


From: Mattias Engdegård
Subject: scratch/hash-table-perf 9141966be51 09/37: ; * src/alloc.c (purecopy_hash_table): Simplify
Date: Sun, 7 Jan 2024 12:41:07 -0500 (EST)

branch: scratch/hash-table-perf
commit 9141966be517f0356fd1ba8586b3dab5b2e2887d
Author: Mattias Engdegård <mattiase@acm.org>
Commit: Mattias Engdegård <mattiase@acm.org>

    ; * src/alloc.c (purecopy_hash_table): Simplify
    
    Copy the entire struct, then take care of fields needing special
    treatment.
---
 src/alloc.c | 20 +++++---------------
 1 file changed, 5 insertions(+), 15 deletions(-)

diff --git a/src/alloc.c b/src/alloc.c
index 36263a89047..53c7c84ec1a 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -5921,26 +5921,16 @@ purecopy_hash_table (struct Lisp_Hash_Table *table)
   eassert (table->purecopy);
 
   struct Lisp_Hash_Table *pure = pure_alloc (sizeof *pure, Lisp_Vectorlike);
-  struct hash_table_test pure_test = table->test;
+  *pure = *table;
+  pure->mutable = false;
 
-  /* Purecopy the hash table test.  */
-  pure_test.name = purecopy (table->test.name);
-  pure_test.user_hash_function = purecopy (table->test.user_hash_function);
-  pure_test.user_cmp_function = purecopy (table->test.user_cmp_function);
-
-  pure->header = table->header;
-  pure->weak = purecopy (Qnil);
+  pure->test.name = purecopy (table->test.name);
+  pure->test.user_hash_function = purecopy (table->test.user_hash_function);
+  pure->test.user_cmp_function = purecopy (table->test.user_cmp_function);
   pure->hash = purecopy (table->hash);
   pure->next = purecopy (table->next);
   pure->index = purecopy (table->index);
-  pure->count = table->count;
-  pure->next_free = table->next_free;
-  pure->purecopy = table->purecopy;
-  eassert (!pure->mutable);
-  pure->rehash_threshold = table->rehash_threshold;
-  pure->rehash_size = table->rehash_size;
   pure->key_and_value = purecopy (table->key_and_value);
-  pure->test = pure_test;
 
   return pure;
 }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]