aboutsummaryrefslogtreecommitdiffstats
path: root/src/fns.c
diff options
context:
space:
mode:
authorPip Cet2021-05-16 15:44:26 +0200
committerStefan Monnier2022-07-01 09:42:00 -0400
commit094fd7ded365434b08f5d7c8ff499d17d566d54b (patch)
tree40366419e9d899e48c26439f428fee7b741d307c /src/fns.c
parent3a4c408a7b6f3df5ca0eb4a406efbdb4899e9742 (diff)
downloademacs-scratch/no-purespace-2.tar.gz
emacs-scratch/no-purespace-2.zip
Remove purespace from Emacsscratch/no-purespace-2
Diffstat (limited to 'src/fns.c')
-rw-r--r--src/fns.c32
1 files changed, 5 insertions, 27 deletions
diff --git a/src/fns.c b/src/fns.c
index 7553a094468..d02e1c3f3d5 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -36,7 +36,6 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
36#include "buffer.h" 36#include "buffer.h"
37#include "intervals.h" 37#include "intervals.h"
38#include "window.h" 38#include "window.h"
39#include "puresize.h"
40#include "gnutls.h" 39#include "gnutls.h"
41 40
42enum equal_kind { EQUAL_NO_QUIT, EQUAL_PLAIN, EQUAL_INCLUDING_PROPERTIES }; 41enum equal_kind { EQUAL_NO_QUIT, EQUAL_PLAIN, EQUAL_INCLUDING_PROPERTIES };
@@ -2653,7 +2652,6 @@ ARRAY is a vector, string, char-table, or bool-vector. */)
2653 size = SCHARS (array); 2652 size = SCHARS (array);
2654 if (size != 0) 2653 if (size != 0)
2655 { 2654 {
2656 CHECK_IMPURE (array, XSTRING (array));
2657 unsigned char str[MAX_MULTIBYTE_LENGTH]; 2655 unsigned char str[MAX_MULTIBYTE_LENGTH];
2658 int len; 2656 int len;
2659 if (STRING_MULTIBYTE (array)) 2657 if (STRING_MULTIBYTE (array))
@@ -2695,7 +2693,6 @@ This makes STRING unibyte and may change its length. */)
2695 ptrdiff_t len = SBYTES (string); 2693 ptrdiff_t len = SBYTES (string);
2696 if (len != 0 || STRING_MULTIBYTE (string)) 2694 if (len != 0 || STRING_MULTIBYTE (string))
2697 { 2695 {
2698 CHECK_IMPURE (string, XSTRING (string));
2699 memset (SDATA (string), 0, len); 2696 memset (SDATA (string), 0, len);
2700 STRING_SET_CHARS (string, len); 2697 STRING_SET_CHARS (string, len);
2701 STRING_SET_UNIBYTE (string); 2698 STRING_SET_UNIBYTE (string);
@@ -4263,16 +4260,12 @@ hash_index_size (struct Lisp_Hash_Table *h, ptrdiff_t size)
4263 size exceeds REHASH_THRESHOLD. 4260 size exceeds REHASH_THRESHOLD.
4264 4261
4265 WEAK specifies the weakness of the table. If non-nil, it must be 4262 WEAK specifies the weakness of the table. If non-nil, it must be
4266 one of the symbols `key', `value', `key-or-value', or `key-and-value'. 4263 one of the symbols `key', `value', `key-or-value', or `key-and-value'. */
4267
4268 If PURECOPY is non-nil, the table can be copied to pure storage via
4269 `purecopy' when Emacs is being dumped. Such tables can no longer be
4270 changed after purecopy. */
4271 4264
4272Lisp_Object 4265Lisp_Object
4273make_hash_table (struct hash_table_test test, EMACS_INT size, 4266make_hash_table (struct hash_table_test test, EMACS_INT size,
4274 float rehash_size, float rehash_threshold, 4267 float rehash_size, float rehash_threshold,
4275 Lisp_Object weak, bool purecopy) 4268 Lisp_Object weak)
4276{ 4269{
4277 struct Lisp_Hash_Table *h; 4270 struct Lisp_Hash_Table *h;
4278 Lisp_Object table; 4271 Lisp_Object table;
@@ -4301,7 +4294,6 @@ make_hash_table (struct hash_table_test test, EMACS_INT size,
4301 h->next = make_vector (size, make_fixnum (-1)); 4294 h->next = make_vector (size, make_fixnum (-1));
4302 h->index = make_vector (hash_index_size (h, size), make_fixnum (-1)); 4295 h->index = make_vector (hash_index_size (h, size), make_fixnum (-1));
4303 h->next_weak = NULL; 4296 h->next_weak = NULL;
4304 h->purecopy = purecopy;
4305 h->mutable = true; 4297 h->mutable = true;
4306 4298
4307 /* Set up the free list. */ 4299 /* Set up the free list. */
@@ -4402,11 +4394,6 @@ maybe_resize_hash_table (struct Lisp_Hash_Table *h)
4402 set_hash_next_slot (h, i, HASH_INDEX (h, start_of_bucket)); 4394 set_hash_next_slot (h, i, HASH_INDEX (h, start_of_bucket));
4403 set_hash_index_slot (h, start_of_bucket, i); 4395 set_hash_index_slot (h, start_of_bucket, i);
4404 } 4396 }
4405
4406#ifdef ENABLE_CHECKING
4407 if (HASH_TABLE_P (Vpurify_flag) && XHASH_TABLE (Vpurify_flag) == h)
4408 message ("Growing hash table to: %"pD"d", next_size);
4409#endif
4410 } 4397 }
4411} 4398}
4412 4399
@@ -4470,7 +4457,6 @@ check_mutable_hash_table (Lisp_Object obj, struct Lisp_Hash_Table *h)
4470{ 4457{
4471 if (!h->mutable) 4458 if (!h->mutable)
4472 signal_error ("hash table test modifies table", obj); 4459 signal_error ("hash table test modifies table", obj);
4473 eassert (!PURE_P (h));
4474} 4460}
4475 4461
4476static void 4462static void
@@ -4998,16 +4984,10 @@ key, value, one of key or value, or both key and value, depending on
4998WEAK. WEAK t is equivalent to `key-and-value'. Default value of WEAK 4984WEAK. WEAK t is equivalent to `key-and-value'. Default value of WEAK
4999is nil. 4985is nil.
5000 4986
5001:purecopy PURECOPY -- If PURECOPY is non-nil, the table can be copied
5002to pure storage when Emacs is being dumped, making the contents of the
5003table read only. Any further changes to purified tables will result
5004in an error.
5005
5006usage: (make-hash-table &rest KEYWORD-ARGS) */) 4987usage: (make-hash-table &rest KEYWORD-ARGS) */)
5007 (ptrdiff_t nargs, Lisp_Object *args) 4988 (ptrdiff_t nargs, Lisp_Object *args)
5008{ 4989{
5009 Lisp_Object test, weak; 4990 Lisp_Object test, weak;
5010 bool purecopy;
5011 struct hash_table_test testdesc; 4991 struct hash_table_test testdesc;
5012 ptrdiff_t i; 4992 ptrdiff_t i;
5013 USE_SAFE_ALLOCA; 4993 USE_SAFE_ALLOCA;
@@ -5041,9 +5021,8 @@ usage: (make-hash-table &rest KEYWORD-ARGS) */)
5041 testdesc.cmpfn = cmpfn_user_defined; 5021 testdesc.cmpfn = cmpfn_user_defined;
5042 } 5022 }
5043 5023
5044 /* See if there's a `:purecopy PURECOPY' argument. */ 5024 /* Ignore a `:purecopy PURECOPY' argument. */
5045 i = get_key_arg (QCpurecopy, nargs, args, used); 5025 get_key_arg (QCpurecopy, nargs, args, used);
5046 purecopy = i && !NILP (args[i]);
5047 /* See if there's a `:size SIZE' argument. */ 5026 /* See if there's a `:size SIZE' argument. */
5048 i = get_key_arg (QCsize, nargs, args, used); 5027 i = get_key_arg (QCsize, nargs, args, used);
5049 Lisp_Object size_arg = i ? args[i] : Qnil; 5028 Lisp_Object size_arg = i ? args[i] : Qnil;
@@ -5093,8 +5072,7 @@ usage: (make-hash-table &rest KEYWORD-ARGS) */)
5093 signal_error ("Invalid argument list", args[i]); 5072 signal_error ("Invalid argument list", args[i]);
5094 5073
5095 SAFE_FREE (); 5074 SAFE_FREE ();
5096 return make_hash_table (testdesc, size, rehash_size, rehash_threshold, weak, 5075 return make_hash_table (testdesc, size, rehash_size, rehash_threshold, weak);
5097 purecopy);
5098} 5076}
5099 5077
5100 5078