[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