~ chicken-core (chicken-5) d2d9d689d4419aeb2f4a603b8d9cf8e6db0b0e58


commit d2d9d689d4419aeb2f4a603b8d9cf8e6db0b0e58
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Sun Aug 1 16:50:26 2010 +0200
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Sun Aug 1 16:50:26 2010 +0200

    OM

diff --git a/manual/Unit extras b/manual/Unit extras
index 72081c1f..f7f28cca 100644
--- a/manual/Unit extras	
+++ b/manual/Unit extras	
@@ -180,7 +180,7 @@ If {{NUM}} is {{#f}} or not given, then all data
 up to the end-of-file is read, or, in the case of {{write-string}} the whole
 string is written. If no more input is available, {{read-string}} returns the
 empty string. {{read-string!}} reads destructively into the given {{STRING}} argument,
-but never more characters that would fit into {{STRING}}. If {{START}} is given, then
+but never more characters than would fit into {{STRING}}. If {{START}} is given, then
 the read characters are stored starting at that position.
 {{read-string!}} returns the actual number of characters read.
 
diff --git a/runtime.c b/runtime.c
index 565a66a6..93492107 100644
--- a/runtime.c
+++ b/runtime.c
@@ -415,6 +415,7 @@ static C_TLS int
   gc_report_flag = 0,
   gc_mode,
   gc_count_1,
+  gc_count_1_total,
   gc_count_2,
   interrupt_reason,
   stack_size_changed,
@@ -691,7 +692,7 @@ int CHICKEN_initialize(int heap, int stack, int symbols, void *toplevel)
   dlopen_flags = 0;
 #endif
 
-  mutation_count = gc_count_1 = gc_count_2 = 0;
+  mutation_count = gc_count_1 = gc_count_1_total = gc_count_2 = 0;
   lf_list = NULL;
   C_register_lf2(NULL, 0, create_initial_ptable());
   C_restart_address = toplevel;
@@ -2736,6 +2737,7 @@ C_regparm void C_fcall C_reclaim(void *trampoline, void *proc)
   if(gc_mode == GC_MINOR) {
     count = (C_uword)C_fromspace_top - (C_uword)start;
     ++gc_count_1;
+    ++gc_count_1_total;
     update_locative_table(GC_MINOR);
   }
   else {
@@ -3885,7 +3887,7 @@ C_regparm C_word C_fcall C_set_gc_report(C_word flag)
 C_regparm C_word C_fcall C_start_timer(void)
 {
   mutation_count = 0;
-  gc_count_1 = 0;
+  gc_count_1_total = 0;
   gc_count_2 = 0;
   timer_start_ms = cpu_milliseconds();
   gc_ms = 0;
@@ -3903,7 +3905,7 @@ void C_ccall C_stop_timer(C_word c, C_word closure, C_word k)
     gc_time = C_flonum(&a, (double)gc_ms / 1000.0),
     info;
 
-  info = C_vector(&a, 6, elapsed, gc_time, C_fix(mutation_count), C_fix(gc_count_1), C_fix(gc_count_2));
+  info = C_vector(&a, 6, elapsed, gc_time, C_fix(mutation_count), C_fix(gc_count_1_total), C_fix(gc_count_2));
   C_kontinue(k, info);
 }
 
Trap