aboutsummaryrefslogtreecommitdiffstats
path: root/src/fns.c
diff options
context:
space:
mode:
authorStefan Monnier2017-02-18 22:37:05 -0500
committerStefan Monnier2017-02-18 22:37:05 -0500
commitfe927ecfe45f66ec58d9e7cab6f2526fc87a6803 (patch)
tree2bf00f13cb623dcdebda530dfcef75af69a4a13a /src/fns.c
parentb2a83eed23d540b4b0ab9e0bf5605821011bfd7d (diff)
downloademacs-fe927ecfe45f66ec58d9e7cab6f2526fc87a6803.tar.gz
emacs-fe927ecfe45f66ec58d9e7cab6f2526fc87a6803.zip
Change type of `rehash_threshold' and `pure' fields in hash-tables
* src/lisp.h (struct Lisp_Hash_Table): Change type of `rehash_threshold' and `pure' fields and move them after `count'. * src/fns.c (make_hash_table): Change type of `rehash_threshold' and `pure'. (Fmake_hash_table, Fhash_table_rehash_threshold): * src/category.c (hash_get_category_set): * src/xterm.c (syms_of_xterm): * src/profiler.c (make_log): * src/print.c (print_object): * src/alloc.c (purecopy_hash_table, purecopy): Adjust accordingly.
Diffstat (limited to 'src/fns.c')
-rw-r--r--src/fns.c30
1 files changed, 15 insertions, 15 deletions
diff --git a/src/fns.c b/src/fns.c
index ffe3218ca7d..e3e040b82d4 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -3676,8 +3676,8 @@ allocate_hash_table (void)
3676Lisp_Object 3676Lisp_Object
3677make_hash_table (struct hash_table_test test, 3677make_hash_table (struct hash_table_test test,
3678 Lisp_Object size, Lisp_Object rehash_size, 3678 Lisp_Object size, Lisp_Object rehash_size,
3679 Lisp_Object rehash_threshold, Lisp_Object weak, 3679 float rehash_threshold, Lisp_Object weak,
3680 Lisp_Object pure) 3680 bool pure)
3681{ 3681{
3682 struct Lisp_Hash_Table *h; 3682 struct Lisp_Hash_Table *h;
3683 Lisp_Object table; 3683 Lisp_Object table;
@@ -3690,15 +3690,13 @@ make_hash_table (struct hash_table_test test,
3690 eassert (INTEGERP (size) && XINT (size) >= 0); 3690 eassert (INTEGERP (size) && XINT (size) >= 0);
3691 eassert ((INTEGERP (rehash_size) && XINT (rehash_size) > 0) 3691 eassert ((INTEGERP (rehash_size) && XINT (rehash_size) > 0)
3692 || (FLOATP (rehash_size) && 1 < XFLOAT_DATA (rehash_size))); 3692 || (FLOATP (rehash_size) && 1 < XFLOAT_DATA (rehash_size)));
3693 eassert (FLOATP (rehash_threshold) 3693 eassert (0 < rehash_threshold && rehash_threshold <= 1.0);
3694 && 0 < XFLOAT_DATA (rehash_threshold)
3695 && XFLOAT_DATA (rehash_threshold) <= 1.0);
3696 3694
3697 if (XFASTINT (size) == 0) 3695 if (XFASTINT (size) == 0)
3698 size = make_number (1); 3696 size = make_number (1);
3699 3697
3700 sz = XFASTINT (size); 3698 sz = XFASTINT (size);
3701 index_float = sz / XFLOAT_DATA (rehash_threshold); 3699 index_float = sz / rehash_threshold;
3702 index_size = (index_float < INDEX_SIZE_BOUND + 1 3700 index_size = (index_float < INDEX_SIZE_BOUND + 1
3703 ? next_almost_prime (index_float) 3701 ? next_almost_prime (index_float)
3704 : INDEX_SIZE_BOUND + 1); 3702 : INDEX_SIZE_BOUND + 1);
@@ -3797,7 +3795,7 @@ maybe_resize_hash_table (struct Lisp_Hash_Table *h)
3797 else 3795 else
3798 new_size = INDEX_SIZE_BOUND + 1; 3796 new_size = INDEX_SIZE_BOUND + 1;
3799 } 3797 }
3800 index_float = new_size / XFLOAT_DATA (h->rehash_threshold); 3798 index_float = new_size / h->rehash_threshold;
3801 index_size = (index_float < INDEX_SIZE_BOUND + 1 3799 index_size = (index_float < INDEX_SIZE_BOUND + 1
3802 ? next_almost_prime (index_float) 3800 ? next_almost_prime (index_float)
3803 : INDEX_SIZE_BOUND + 1); 3801 : INDEX_SIZE_BOUND + 1);
@@ -4391,7 +4389,9 @@ in an error.
4391usage: (make-hash-table &rest KEYWORD-ARGS) */) 4389usage: (make-hash-table &rest KEYWORD-ARGS) */)
4392 (ptrdiff_t nargs, Lisp_Object *args) 4390 (ptrdiff_t nargs, Lisp_Object *args)
4393{ 4391{
4394 Lisp_Object test, size, rehash_size, rehash_threshold, weak, pure; 4392 Lisp_Object test, size, rehash_size, weak;
4393 float rehash_threshold;
4394 bool pure;
4395 struct hash_table_test testdesc; 4395 struct hash_table_test testdesc;
4396 ptrdiff_t i; 4396 ptrdiff_t i;
4397 USE_SAFE_ALLOCA; 4397 USE_SAFE_ALLOCA;
@@ -4427,7 +4427,7 @@ usage: (make-hash-table &rest KEYWORD-ARGS) */)
4427 4427
4428 /* See if there's a `:purecopy PURECOPY' argument. */ 4428 /* See if there's a `:purecopy PURECOPY' argument. */
4429 i = get_key_arg (QCpurecopy, nargs, args, used); 4429 i = get_key_arg (QCpurecopy, nargs, args, used);
4430 pure = i ? args[i] : Qnil; 4430 pure = i && !NILP (args[i]);
4431 /* See if there's a `:size SIZE' argument. */ 4431 /* See if there's a `:size SIZE' argument. */
4432 i = get_key_arg (QCsize, nargs, args, used); 4432 i = get_key_arg (QCsize, nargs, args, used);
4433 size = i ? args[i] : Qnil; 4433 size = i ? args[i] : Qnil;
@@ -4445,11 +4445,11 @@ usage: (make-hash-table &rest KEYWORD-ARGS) */)
4445 4445
4446 /* Look for `:rehash-threshold THRESHOLD'. */ 4446 /* Look for `:rehash-threshold THRESHOLD'. */
4447 i = get_key_arg (QCrehash_threshold, nargs, args, used); 4447 i = get_key_arg (QCrehash_threshold, nargs, args, used);
4448 rehash_threshold = i ? args[i] : make_float (DEFAULT_REHASH_THRESHOLD); 4448 rehash_threshold =
4449 if (! (FLOATP (rehash_threshold) 4449 i ? (FLOATP (args[i]) ? XFLOAT_DATA (args[i]) : -1.0)
4450 && 0 < XFLOAT_DATA (rehash_threshold) 4450 : DEFAULT_REHASH_THRESHOLD;
4451 && XFLOAT_DATA (rehash_threshold) <= 1)) 4451 if (! (0 < rehash_threshold && rehash_threshold <= 1))
4452 signal_error ("Invalid hash table rehash threshold", rehash_threshold); 4452 signal_error ("Invalid hash table rehash threshold", args[i]);
4453 4453
4454 /* Look for `:weakness WEAK'. */ 4454 /* Look for `:weakness WEAK'. */
4455 i = get_key_arg (QCweakness, nargs, args, used); 4455 i = get_key_arg (QCweakness, nargs, args, used);
@@ -4504,7 +4504,7 @@ DEFUN ("hash-table-rehash-threshold", Fhash_table_rehash_threshold,
4504 doc: /* Return the current rehash threshold of TABLE. */) 4504 doc: /* Return the current rehash threshold of TABLE. */)
4505 (Lisp_Object table) 4505 (Lisp_Object table)
4506{ 4506{
4507 return check_hash_table (table)->rehash_threshold; 4507 return make_float (check_hash_table (table)->rehash_threshold);
4508} 4508}
4509 4509
4510 4510