summaryrefslogtreecommitdiffstats
path: root/ChangeLog
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2014-02-28 23:37:45 -0800
committerKaz Kylheku <kaz@kylheku.com>2014-02-28 23:37:45 -0800
commit752f8309a72bacef5ce03ac8e98211b1df2ff0a8 (patch)
tree273a223a69d6dfd8f735f18ae07da52141630c39 /ChangeLog
parent94750af472e12acf3a5970c98e4dab6feada2e84 (diff)
downloadtxr-752f8309a72bacef5ce03ac8e98211b1df2ff0a8.tar.gz
txr-752f8309a72bacef5ce03ac8e98211b1df2ff0a8.tar.bz2
txr-752f8309a72bacef5ce03ac8e98211b1df2ff0a8.zip
Turn *gensym-counter* into proper special variable.
* eval.c (eval_init): Save *gensym-counter* symbol in gensym_counter_s symbol variable right after interning, and use zero as the inital value rather than the gensym_counter variable which is removed now. * lib.c (gensym_counter_s): New symbol variable. (gensym_counter): Variable removed. (gensym): Slight refactoring to avoid a double variable lookup. Also, for generational GC correctness, use the set macro to update it, since the variable could live inside heap object and the counter could overflow to bignums which are heap objects. (obj_init): Remove initialization of gensym_counter. * lib.h (gensym_counter_s): Declared. (gensym_counter): Declaration removed, replaced by macro.
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog19
1 files changed, 19 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 50671b4b..a5be43ec 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,24 @@
2014-02-28 Kaz Kylheku <kaz@kylheku.com>
+ Turn *gensym-counter* into proper special variable.
+
+ * eval.c (eval_init): Save *gensym-counter* symbol in gensym_counter_s
+ symbol variable right after interning, and use zero as the inital value
+ rather than the gensym_counter variable which is removed now.
+
+ * lib.c (gensym_counter_s): New symbol variable.
+ (gensym_counter): Variable removed.
+ (gensym): Slight refactoring to avoid a double variable lookup.
+ Also, for generational GC correctness, use the set macro to update it,
+ since the variable could live inside heap object and the counter
+ could overflow to bignums which are heap objects.
+ (obj_init): Remove initialization of gensym_counter.
+
+ * lib.h (gensym_counter_s): Declared.
+ (gensym_counter): Declaration removed, replaced by macro.
+
+2014-02-28 Kaz Kylheku <kaz@kylheku.com>
+
Change in the design of how special variables work, to fix the broken
re-binding. C code now has to go through the dynamic environment lookup
to access things like *random-state*, or *stdout*. As part of this,