summaryrefslogtreecommitdiffstats
path: root/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog31
1 files changed, 31 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 9cad9c43..9c113392 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,36 @@
12014-10-21 Kaz Kylheku <kaz@kylheku.com> 12014-10-21 Kaz Kylheku <kaz@kylheku.com>
2 2
3 Ensure that a hash reorganization doesn't take place
4 during a traversal, which could cause items to be visited
5 twice or skipped.
6
7 * gc.c (full_gc): Changed from static to exter (full_gc): Changed to
8 internal linkage.
9
10 * gc.h (full_gc): Declared.
11
12 * hash.c (struct hash): New member, usecount.
13 (struct hash_iter): New member, next.
14 (reachable_iters): New static variable.
15 (hash_mark): Reset the usecount of every reachable hash table.
16 (hash_iter_mark): Add every reachable iterator to reachable_iters
17 list.
18 (make_hash, make_similar_hash, copy_hash): Initialize usecount.
19 (gethash_c): Do not call hash_grow if usecount is nonzero.
20 (hash_begin): Initialize next field of hash_iter to null.
21 Increment use count on hash table.
22 (hash_next): When traversal ends, release use count, and
23 null out the hash table reference.
24 (do_weak_tables): New static function.
25 (do_iters): New static function.
26 (hash_process_weak): Weak hash processing logic moved
27 to do_weak_tables. Also calls do_iters.
28
29 * txr.1: Describe hash table traversal, and the assurances
30 and caveats about inserting and deleting items.
31
322014-10-21 Kaz Kylheku <kaz@kylheku.com>
33
3 * eval.c (interp_fun): If the function doesn't have 34 * eval.c (interp_fun): If the function doesn't have
4 specials, then don't bother saving and restoring dynamic 35 specials, then don't bother saving and restoring dynamic
5 env around the argument binding and evaluation. 36 env around the argument binding and evaluation.