aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPip Cet2024-08-20 19:04:44 +0000
committerStefan Kangas2024-12-12 22:48:12 +0100
commitafd61deaaeb5e5e6845bdf995ac5ee9a3479599c (patch)
treea13e37e2a5ad40374959fe263ebb4e2a8a484ed2 /src
parente1e101c6c10b6e5110c2c47946d477a752828a78 (diff)
downloademacs-afd61deaaeb5e5e6845bdf995ac5ee9a3479599c.tar.gz
emacs-afd61deaaeb5e5e6845bdf995ac5ee9a3479599c.zip
Pure storage removal: Remove purecopy hash table flag
* lisp/emacs-liqsp/comp.el (comp--jump-table-optimizable): Adjust comment. * src/category.c (hash_get_category_set): * src/emacs-module.c (syms_of_module): * src/fns.c (make_hash_table): Remove 'purecopy' flag and update docstring. (Fmake_hash_table): Ignore ':purecopy' argument. * src/frame.c (make_frame): * src/image.c (xpm_make_color_table_h): * src/lisp.h (struct Lisp_Hash_Table): Drop 'purecopy' flag. * src/pdumper.c (dump_hash_table): Don't dump 'purecopy' flag. * src/print.c (print_object): Don't print 'purecopy' flag * src/json.c (json_parse_object): * src/lread.c (readevalloop, read_internal_start): * src/pgtkterm.c (syms_of_pgtkterm): * src/profiler.c (export_log): * src/xfaces.c (syms_of_xfaces): * src/xterm.c (syms_of_xterm): Adjust calls to 'make_hash_table'.
Diffstat (limited to 'src')
-rw-r--r--src/category.c2
-rw-r--r--src/emacs-module.c2
-rw-r--r--src/fns.c28
-rw-r--r--src/frame.c2
-rw-r--r--src/image.c2
-rw-r--r--src/json.c2
-rw-r--r--src/lisp.h6
-rw-r--r--src/lread.c8
-rw-r--r--src/pdumper.c1
-rw-r--r--src/pgtkterm.c2
-rw-r--r--src/print.c3
-rw-r--r--src/profiler.c2
-rw-r--r--src/xfaces.c2
-rw-r--r--src/xterm.c2
14 files changed, 21 insertions, 43 deletions
diff --git a/src/category.c b/src/category.c
index ef29a1a681a..85a2ea0ad0f 100644
--- a/src/category.c
+++ b/src/category.c
@@ -51,7 +51,7 @@ hash_get_category_set (Lisp_Object table, Lisp_Object category_set)
51 if (NILP (XCHAR_TABLE (table)->extras[1])) 51 if (NILP (XCHAR_TABLE (table)->extras[1]))
52 set_char_table_extras 52 set_char_table_extras
53 (table, 1, 53 (table, 1,
54 make_hash_table (&hashtest_equal, DEFAULT_HASH_SIZE, Weak_None, false)); 54 make_hash_table (&hashtest_equal, DEFAULT_HASH_SIZE, Weak_None));
55 struct Lisp_Hash_Table *h = XHASH_TABLE (XCHAR_TABLE (table)->extras[1]); 55 struct Lisp_Hash_Table *h = XHASH_TABLE (XCHAR_TABLE (table)->extras[1]);
56 hash_hash_t hash; 56 hash_hash_t hash;
57 ptrdiff_t i = hash_lookup_get_hash (h, category_set, &hash); 57 ptrdiff_t i = hash_lookup_get_hash (h, category_set, &hash);
diff --git a/src/emacs-module.c b/src/emacs-module.c
index d818b6cdeb9..e3a935236ca 100644
--- a/src/emacs-module.c
+++ b/src/emacs-module.c
@@ -1709,7 +1709,7 @@ syms_of_module (void)
1709{ 1709{
1710 staticpro (&Vmodule_refs_hash); 1710 staticpro (&Vmodule_refs_hash);
1711 Vmodule_refs_hash 1711 Vmodule_refs_hash
1712 = make_hash_table (&hashtest_eq, DEFAULT_HASH_SIZE, Weak_None, false); 1712 = make_hash_table (&hashtest_eq, DEFAULT_HASH_SIZE, Weak_None);
1713 1713
1714 DEFSYM (Qmodule_load_failed, "module-load-failed"); 1714 DEFSYM (Qmodule_load_failed, "module-load-failed");
1715 Fput (Qmodule_load_failed, Qerror_conditions, 1715 Fput (Qmodule_load_failed, Qerror_conditions,
diff --git a/src/fns.c b/src/fns.c
index 75fd20a2d79..7c2ddb8707c 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -4847,15 +4847,11 @@ static const hash_idx_t empty_hash_index_vector[] = {-1};
4847 4847
4848 Give the table initial capacity SIZE, 0 <= SIZE <= MOST_POSITIVE_FIXNUM. 4848 Give the table initial capacity SIZE, 0 <= SIZE <= MOST_POSITIVE_FIXNUM.
4849 4849
4850 WEAK specifies the weakness of the table. 4850 WEAK specifies the weakness of the table. */
4851
4852 If PURECOPY is non-nil, the table can be copied to pure storage via
4853 `purecopy' when Emacs is being dumped. Such tables can no longer be
4854 changed after purecopy. */
4855 4851
4856Lisp_Object 4852Lisp_Object
4857make_hash_table (const struct hash_table_test *test, EMACS_INT size, 4853make_hash_table (const struct hash_table_test *test, EMACS_INT size,
4858 hash_table_weakness_t weak, bool purecopy) 4854 hash_table_weakness_t weak)
4859{ 4855{
4860 eassert (SYMBOLP (test->name)); 4856 eassert (SYMBOLP (test->name));
4861 eassert (0 <= size && size <= min (MOST_POSITIVE_FIXNUM, PTRDIFF_MAX)); 4857 eassert (0 <= size && size <= min (MOST_POSITIVE_FIXNUM, PTRDIFF_MAX));
@@ -4901,7 +4897,6 @@ make_hash_table (const struct hash_table_test *test, EMACS_INT size,
4901 } 4897 }
4902 4898
4903 h->next_weak = NULL; 4899 h->next_weak = NULL;
4904 h->purecopy = purecopy;
4905 h->mutable = true; 4900 h->mutable = true;
4906 return make_lisp_hash_table (h); 4901 return make_lisp_hash_table (h);
4907} 4902}
@@ -5735,13 +5730,8 @@ key, value, one of key or value, or both key and value, depending on
5735WEAK. WEAK t is equivalent to `key-and-value'. Default value of WEAK 5730WEAK. WEAK t is equivalent to `key-and-value'. Default value of WEAK
5736is nil. 5731is nil.
5737 5732
5738:purecopy PURECOPY -- If PURECOPY is non-nil, the table can be copied 5733The keywords arguments :rehash-threshold, :rehash-size, and :purecopy
5739to pure storage when Emacs is being dumped, making the contents of the 5734are obsolete and ignored.
5740table read only. Any further changes to purified tables will result
5741in an error.
5742
5743The keywords arguments :rehash-threshold and :rehash-size are obsolete
5744and ignored.
5745 5735
5746usage: (make-hash-table &rest KEYWORD-ARGS) */) 5736usage: (make-hash-table &rest KEYWORD-ARGS) */)
5747 (ptrdiff_t nargs, Lisp_Object *args) 5737 (ptrdiff_t nargs, Lisp_Object *args)
@@ -5749,7 +5739,6 @@ usage: (make-hash-table &rest KEYWORD-ARGS) */)
5749 Lisp_Object test_arg = Qnil; 5739 Lisp_Object test_arg = Qnil;
5750 Lisp_Object weakness_arg = Qnil; 5740 Lisp_Object weakness_arg = Qnil;
5751 Lisp_Object size_arg = Qnil; 5741 Lisp_Object size_arg = Qnil;
5752 Lisp_Object purecopy_arg = Qnil;
5753 5742
5754 if (nargs & 1) 5743 if (nargs & 1)
5755 error ("Odd number of arguments"); 5744 error ("Odd number of arguments");
@@ -5763,9 +5752,8 @@ usage: (make-hash-table &rest KEYWORD-ARGS) */)
5763 weakness_arg = arg; 5752 weakness_arg = arg;
5764 else if (BASE_EQ (kw, QCsize)) 5753 else if (BASE_EQ (kw, QCsize))
5765 size_arg = arg; 5754 size_arg = arg;
5766 else if (BASE_EQ (kw, QCpurecopy)) 5755 else if (BASE_EQ (kw, QCrehash_threshold) || BASE_EQ (kw, QCrehash_size)
5767 purecopy_arg = arg; 5756 || BASE_EQ (kw, QCpurecopy))
5768 else if (BASE_EQ (kw, QCrehash_threshold) || BASE_EQ (kw, QCrehash_size))
5769 ; /* ignore obsolete keyword arguments */ 5757 ; /* ignore obsolete keyword arguments */
5770 else 5758 else
5771 signal_error ("Invalid keyword argument", kw); 5759 signal_error ("Invalid keyword argument", kw);
@@ -5781,8 +5769,6 @@ usage: (make-hash-table &rest KEYWORD-ARGS) */)
5781 else 5769 else
5782 test = get_hash_table_user_test (test_arg); 5770 test = get_hash_table_user_test (test_arg);
5783 5771
5784 bool purecopy = !NILP (purecopy_arg);
5785
5786 EMACS_INT size; 5772 EMACS_INT size;
5787 if (NILP (size_arg)) 5773 if (NILP (size_arg))
5788 size = DEFAULT_HASH_SIZE; 5774 size = DEFAULT_HASH_SIZE;
@@ -5805,7 +5791,7 @@ usage: (make-hash-table &rest KEYWORD-ARGS) */)
5805 else 5791 else
5806 signal_error ("Invalid hash table weakness", weakness_arg); 5792 signal_error ("Invalid hash table weakness", weakness_arg);
5807 5793
5808 return make_hash_table (test, size, weak, purecopy); 5794 return make_hash_table (test, size, weak);
5809} 5795}
5810 5796
5811 5797
diff --git a/src/frame.c b/src/frame.c
index 78fa41bbe62..4597dd5cecd 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -1043,7 +1043,7 @@ make_frame (bool mini_p)
1043 rw->pixel_height = rw->total_lines * FRAME_LINE_HEIGHT (f); 1043 rw->pixel_height = rw->total_lines * FRAME_LINE_HEIGHT (f);
1044 1044
1045 fset_face_hash_table 1045 fset_face_hash_table
1046 (f, make_hash_table (&hashtest_eq, DEFAULT_HASH_SIZE, Weak_None, false)); 1046 (f, make_hash_table (&hashtest_eq, DEFAULT_HASH_SIZE, Weak_None));
1047 1047
1048 if (mini_p) 1048 if (mini_p)
1049 { 1049 {
diff --git a/src/image.c b/src/image.c
index 0012abcb451..92906f5274c 100644
--- a/src/image.c
+++ b/src/image.c
@@ -6200,7 +6200,7 @@ xpm_make_color_table_h (void (**put_func) (Lisp_Object, const char *, int,
6200{ 6200{
6201 *put_func = xpm_put_color_table_h; 6201 *put_func = xpm_put_color_table_h;
6202 *get_func = xpm_get_color_table_h; 6202 *get_func = xpm_get_color_table_h;
6203 return make_hash_table (&hashtest_equal, DEFAULT_HASH_SIZE, Weak_None, false); 6203 return make_hash_table (&hashtest_equal, DEFAULT_HASH_SIZE, Weak_None);
6204} 6204}
6205 6205
6206static void 6206static void
diff --git a/src/json.c b/src/json.c
index 282dca6e8ff..bfdf7af0ab0 100644
--- a/src/json.c
+++ b/src/json.c
@@ -1564,7 +1564,7 @@ json_parse_object (struct json_parser *parser)
1564 case json_object_hashtable: 1564 case json_object_hashtable:
1565 { 1565 {
1566 EMACS_INT value = (parser->object_workspace_current - first) / 2; 1566 EMACS_INT value = (parser->object_workspace_current - first) / 2;
1567 result = make_hash_table (&hashtest_equal, value, Weak_None, false); 1567 result = make_hash_table (&hashtest_equal, value, Weak_None);
1568 struct Lisp_Hash_Table *h = XHASH_TABLE (result); 1568 struct Lisp_Hash_Table *h = XHASH_TABLE (result);
1569 for (size_t i = first; i < parser->object_workspace_current; i += 2) 1569 for (size_t i = first; i < parser->object_workspace_current; i += 2)
1570 { 1570 {
diff --git a/src/lisp.h b/src/lisp.h
index 1370fe7e30f..5ebbe4f9860 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -2620,10 +2620,6 @@ struct Lisp_Hash_Table
2620 /* Hash table test (only used when frozen in dump) */ 2620 /* Hash table test (only used when frozen in dump) */
2621 hash_table_std_test_t frozen_test : 2; 2621 hash_table_std_test_t frozen_test : 2;
2622 2622
2623 /* True if the table can be purecopied. The table cannot be
2624 changed afterwards. */
2625 bool_bf purecopy : 1;
2626
2627 /* True if the table is mutable. Ordinarily tables are mutable, but 2623 /* True if the table is mutable. Ordinarily tables are mutable, but
2628 some tables are not: while a table is being mutated it is immutable 2624 some tables are not: while a table is being mutated it is immutable
2629 for recursive attempts to mutate it. */ 2625 for recursive attempts to mutate it. */
@@ -4258,7 +4254,7 @@ extern char *extract_data_from_object (Lisp_Object, ptrdiff_t *, ptrdiff_t *);
4258EMACS_UINT hash_string (char const *, ptrdiff_t); 4254EMACS_UINT hash_string (char const *, ptrdiff_t);
4259EMACS_UINT sxhash (Lisp_Object); 4255EMACS_UINT sxhash (Lisp_Object);
4260Lisp_Object make_hash_table (const struct hash_table_test *, EMACS_INT, 4256Lisp_Object make_hash_table (const struct hash_table_test *, EMACS_INT,
4261 hash_table_weakness_t, bool); 4257 hash_table_weakness_t);
4262Lisp_Object hash_table_weakness_symbol (hash_table_weakness_t weak); 4258Lisp_Object hash_table_weakness_symbol (hash_table_weakness_t weak);
4263ptrdiff_t hash_lookup (struct Lisp_Hash_Table *, Lisp_Object); 4259ptrdiff_t hash_lookup (struct Lisp_Hash_Table *, Lisp_Object);
4264ptrdiff_t hash_lookup_get_hash (struct Lisp_Hash_Table *h, Lisp_Object key, 4260ptrdiff_t hash_lookup_get_hash (struct Lisp_Hash_Table *h, Lisp_Object key,
diff --git a/src/lread.c b/src/lread.c
index a95abd687ac..8adb862d9a0 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -2490,11 +2490,11 @@ readevalloop (Lisp_Object readcharfun,
2490 if (! HASH_TABLE_P (read_objects_map) 2490 if (! HASH_TABLE_P (read_objects_map)
2491 || XHASH_TABLE (read_objects_map)->count) 2491 || XHASH_TABLE (read_objects_map)->count)
2492 read_objects_map 2492 read_objects_map
2493 = make_hash_table (&hashtest_eq, DEFAULT_HASH_SIZE, Weak_None, false); 2493 = make_hash_table (&hashtest_eq, DEFAULT_HASH_SIZE, Weak_None);
2494 if (! HASH_TABLE_P (read_objects_completed) 2494 if (! HASH_TABLE_P (read_objects_completed)
2495 || XHASH_TABLE (read_objects_completed)->count) 2495 || XHASH_TABLE (read_objects_completed)->count)
2496 read_objects_completed 2496 read_objects_completed
2497 = make_hash_table (&hashtest_eq, DEFAULT_HASH_SIZE, Weak_None, false); 2497 = make_hash_table (&hashtest_eq, DEFAULT_HASH_SIZE, Weak_None);
2498 if (!NILP (Vpurify_flag) && c == '(') 2498 if (!NILP (Vpurify_flag) && c == '(')
2499 val = read0 (readcharfun, false); 2499 val = read0 (readcharfun, false);
2500 else 2500 else
@@ -2740,11 +2740,11 @@ read_internal_start (Lisp_Object stream, Lisp_Object start, Lisp_Object end,
2740 if (! HASH_TABLE_P (read_objects_map) 2740 if (! HASH_TABLE_P (read_objects_map)
2741 || XHASH_TABLE (read_objects_map)->count) 2741 || XHASH_TABLE (read_objects_map)->count)
2742 read_objects_map 2742 read_objects_map
2743 = make_hash_table (&hashtest_eq, DEFAULT_HASH_SIZE, Weak_None, false); 2743 = make_hash_table (&hashtest_eq, DEFAULT_HASH_SIZE, Weak_None);
2744 if (! HASH_TABLE_P (read_objects_completed) 2744 if (! HASH_TABLE_P (read_objects_completed)
2745 || XHASH_TABLE (read_objects_completed)->count) 2745 || XHASH_TABLE (read_objects_completed)->count)
2746 read_objects_completed 2746 read_objects_completed
2747 = make_hash_table (&hashtest_eq, DEFAULT_HASH_SIZE, Weak_None, false); 2747 = make_hash_table (&hashtest_eq, DEFAULT_HASH_SIZE, Weak_None);
2748 2748
2749 if (STRINGP (stream) 2749 if (STRINGP (stream)
2750 || ((CONSP (stream) && STRINGP (XCAR (stream))))) 2750 || ((CONSP (stream) && STRINGP (XCAR (stream)))))
diff --git a/src/pdumper.c b/src/pdumper.c
index 5a55dccf09f..5bd0d8ca44a 100644
--- a/src/pdumper.c
+++ b/src/pdumper.c
@@ -2747,7 +2747,6 @@ dump_hash_table (struct dump_context *ctx, Lisp_Object object)
2747 dump_pseudovector_lisp_fields (ctx, &out->header, &hash->header); 2747 dump_pseudovector_lisp_fields (ctx, &out->header, &hash->header);
2748 DUMP_FIELD_COPY (out, hash, count); 2748 DUMP_FIELD_COPY (out, hash, count);
2749 DUMP_FIELD_COPY (out, hash, weakness); 2749 DUMP_FIELD_COPY (out, hash, weakness);
2750 DUMP_FIELD_COPY (out, hash, purecopy);
2751 DUMP_FIELD_COPY (out, hash, mutable); 2750 DUMP_FIELD_COPY (out, hash, mutable);
2752 DUMP_FIELD_COPY (out, hash, frozen_test); 2751 DUMP_FIELD_COPY (out, hash, frozen_test);
2753 if (hash->key_and_value) 2752 if (hash->key_and_value)
diff --git a/src/pgtkterm.c b/src/pgtkterm.c
index 246604ec18b..5b55c1b488d 100644
--- a/src/pgtkterm.c
+++ b/src/pgtkterm.c
@@ -7485,7 +7485,7 @@ If set to a non-float value, there will be no wait at all. */);
7485 7485
7486 DEFVAR_LISP ("pgtk-keysym-table", Vpgtk_keysym_table, 7486 DEFVAR_LISP ("pgtk-keysym-table", Vpgtk_keysym_table,
7487 doc: /* Hash table of character codes indexed by X keysym codes. */); 7487 doc: /* Hash table of character codes indexed by X keysym codes. */);
7488 Vpgtk_keysym_table = make_hash_table (&hashtest_eql, 900, Weak_None, false); 7488 Vpgtk_keysym_table = make_hash_table (&hashtest_eql, 900, Weak_None);
7489 7489
7490 window_being_scrolled = Qnil; 7490 window_being_scrolled = Qnil;
7491 staticpro (&window_being_scrolled); 7491 staticpro (&window_being_scrolled);
diff --git a/src/print.c b/src/print.c
index 8f28b14e8b6..35a2dac6263 100644
--- a/src/print.c
+++ b/src/print.c
@@ -2605,9 +2605,6 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag)
2605 printcharfun, escapeflag); 2605 printcharfun, escapeflag);
2606 } 2606 }
2607 2607
2608 if (h->purecopy)
2609 print_c_string (" purecopy t", printcharfun);
2610
2611 ptrdiff_t size = h->count; 2608 ptrdiff_t size = h->count;
2612 if (size > 0) 2609 if (size > 0)
2613 { 2610 {
diff --git a/src/profiler.c b/src/profiler.c
index 6e1dc46abd3..80173ac735e 100644
--- a/src/profiler.c
+++ b/src/profiler.c
@@ -562,7 +562,7 @@ export_log (struct profiler_log *plog)
562 the log but close enough, and will never confuse two distinct 562 the log but close enough, and will never confuse two distinct
563 keys in the log. */ 563 keys in the log. */
564 Lisp_Object h = make_hash_table (&hashtest_equal, DEFAULT_HASH_SIZE, 564 Lisp_Object h = make_hash_table (&hashtest_equal, DEFAULT_HASH_SIZE,
565 Weak_None, false); 565 Weak_None);
566 for (int i = 0; i < log->size; i++) 566 for (int i = 0; i < log->size; i++)
567 { 567 {
568 int count = get_log_count (log, i); 568 int count = get_log_count (log, i);
diff --git a/src/xfaces.c b/src/xfaces.c
index 7763fdd4953..9c54fe5b051 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -7518,7 +7518,7 @@ only for this purpose. */);
7518 doc: /* Hash table of global face definitions (for internal use only.) */); 7518 doc: /* Hash table of global face definitions (for internal use only.) */);
7519 Vface_new_frame_defaults = 7519 Vface_new_frame_defaults =
7520 /* 33 entries is enough to fit all basic faces */ 7520 /* 33 entries is enough to fit all basic faces */
7521 make_hash_table (&hashtest_eq, 33, Weak_None, false); 7521 make_hash_table (&hashtest_eq, 33, Weak_None);
7522 7522
7523 DEFVAR_LISP ("face-default-stipple", Vface_default_stipple, 7523 DEFVAR_LISP ("face-default-stipple", Vface_default_stipple,
7524 doc: /* Default stipple pattern used on monochrome displays. 7524 doc: /* Default stipple pattern used on monochrome displays.
diff --git a/src/xterm.c b/src/xterm.c
index f78b20e0d58..c723362c91a 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -32739,7 +32739,7 @@ If set to a non-float value, there will be no wait at all. */);
32739 32739
32740 DEFVAR_LISP ("x-keysym-table", Vx_keysym_table, 32740 DEFVAR_LISP ("x-keysym-table", Vx_keysym_table,
32741 doc: /* Hash table of character codes indexed by X keysym codes. */); 32741 doc: /* Hash table of character codes indexed by X keysym codes. */);
32742 Vx_keysym_table = make_hash_table (&hashtest_eql, 900, Weak_None, false); 32742 Vx_keysym_table = make_hash_table (&hashtest_eql, 900, Weak_None);
32743 32743
32744 DEFVAR_BOOL ("x-frame-normalize-before-maximize", 32744 DEFVAR_BOOL ("x-frame-normalize-before-maximize",
32745 x_frame_normalize_before_maximize, 32745 x_frame_normalize_before_maximize,