diff options
| author | Stefan Monnier | 2017-02-18 22:37:05 -0500 |
|---|---|---|
| committer | Stefan Monnier | 2017-02-18 22:37:05 -0500 |
| commit | fe927ecfe45f66ec58d9e7cab6f2526fc87a6803 (patch) | |
| tree | 2bf00f13cb623dcdebda530dfcef75af69a4a13a /src/fns.c | |
| parent | b2a83eed23d540b4b0ab9e0bf5605821011bfd7d (diff) | |
| download | emacs-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.c | 30 |
1 files changed, 15 insertions, 15 deletions
| @@ -3676,8 +3676,8 @@ allocate_hash_table (void) | |||
| 3676 | Lisp_Object | 3676 | Lisp_Object |
| 3677 | make_hash_table (struct hash_table_test test, | 3677 | make_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. | |||
| 4391 | usage: (make-hash-table &rest KEYWORD-ARGS) */) | 4389 | usage: (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 | ||