emacs-diffs
[Top][All Lists]
Advanced

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

master 05e3183ede3 2/2: Rearrange and pack hash table fields to reduce s


From: Mattias Engdegård
Subject: master 05e3183ede3 2/2: Rearrange and pack hash table fields to reduce space
Date: Tue, 6 Feb 2024 09:50:48 -0500 (EST)

branch: master
commit 05e3183ede3a08993a7d209fb14153abaed0c74e
Author: Mattias Engdegård <mattiase@acm.org>
Commit: Mattias Engdegård <mattiase@acm.org>

    Rearrange and pack hash table fields to reduce space
    
    * src/lisp.h (struct Lisp_Hash_Table): Move and reduce width of fields
    where possible; this saves an entire word at no apparent cost.
---
 src/lisp.h | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/lisp.h b/src/lisp.h
index d6bbf15d83b..5326824bf38 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -2475,9 +2475,6 @@ struct Lisp_Hash_Table
      The table is physically split into three vectors (hash, next,
      key_and_value) which may or may not be beneficial.  */
 
-  int index_bits;         /* log2 (size of the index vector).  */
-  hash_idx_t table_size;   /* Size of the next and hash vectors.  */
-
   /* Bucket vector.  An entry of -1 indicates no item is present,
      and a nonnegative entry is the index of the first item in
      a collision chain.
@@ -2514,20 +2511,24 @@ struct Lisp_Hash_Table
   /* Index of first free entry in free list, or -1 if none.  */
   hash_idx_t next_free;
 
+  hash_idx_t table_size;   /* Size of the next and hash vectors.  */
+
+  unsigned char index_bits;    /* log2 (size of the index vector).  */
+
   /* Weakness of the table.  */
-  hash_table_weakness_t weakness : 8;
+  hash_table_weakness_t weakness : 3;
 
   /* Hash table test (only used when frozen in dump)  */
-  hash_table_std_test_t frozen_test : 8;
+  hash_table_std_test_t frozen_test : 2;
 
   /* True if the table can be purecopied.  The table cannot be
      changed afterwards.  */
-  bool purecopy;
+  bool_bf purecopy : 1;
 
   /* True if the table is mutable.  Ordinarily tables are mutable, but
      pure tables are not, and while a table is being mutated it is
      immutable for recursive attempts to mutate it.  */
-  bool mutable;
+  bool_bf mutable : 1;
 
   /* Next weak hash table if this is a weak hash table.  The head of
      the list is in weak_hash_tables.  Used only during garbage



reply via email to

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