diff options
| author | Pip Cet | 2020-08-11 02:16:53 -0700 |
|---|---|---|
| committer | Paul Eggert | 2020-08-11 02:27:43 -0700 |
| commit | 16a16645f524c62f7906036b0e383e4247b58de7 (patch) | |
| tree | ec9af0e89b5494707fc630d5cebec267737d98d7 /src/bytecode.c | |
| parent | 0d0aad213f941efc0fa0ec032e37dc9c2b08c9fb (diff) | |
| download | emacs-16a16645f524c62f7906036b0e383e4247b58de7.tar.gz emacs-16a16645f524c62f7906036b0e383e4247b58de7.zip | |
Rehash hash tables eagerly after loading a dump
This simplifies code, and helps performance in some cases (Bug#36597).
* src/lisp.h (hash_rehash_needed_p): Remove. All uses removed.
(hash_rehash_if_needed): Remove. All uses removed.
(struct Lisp_Hash_Table): Remove comment about rehashing hash tables.
* src/pdumper.c (thaw_hash_tables): New function.
(hash_table_thaw): New function.
(hash_table_freeze): New function.
(dump_hash_table): Simplify.
(dump_hash_table_list): New function.
(hash_table_contents): New function.
(Fdump_emacs_portable): Handle hash tables by eager rehashing.
(pdumper_load): Restore hash tables.
(init_pdumper_once): New function.
Diffstat (limited to 'src/bytecode.c')
| -rw-r--r-- | src/bytecode.c | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/src/bytecode.c b/src/bytecode.c index 1913a4812a0..1c3b6eac0d1 100644 --- a/src/bytecode.c +++ b/src/bytecode.c | |||
| @@ -1401,7 +1401,6 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, | |||
| 1401 | Lisp_Object v1 = POP; | 1401 | Lisp_Object v1 = POP; |
| 1402 | ptrdiff_t i; | 1402 | ptrdiff_t i; |
| 1403 | struct Lisp_Hash_Table *h = XHASH_TABLE (jmp_table); | 1403 | struct Lisp_Hash_Table *h = XHASH_TABLE (jmp_table); |
| 1404 | hash_rehash_if_needed (h); | ||
| 1405 | 1404 | ||
| 1406 | /* h->count is a faster approximation for HASH_TABLE_SIZE (h) | 1405 | /* h->count is a faster approximation for HASH_TABLE_SIZE (h) |
| 1407 | here. */ | 1406 | here. */ |