~ chicken-core (chicken-5) e7248ba500c74b0888074b40c1f4dfab90e68c34


commit e7248ba500c74b0888074b40c1f4dfab90e68c34
Author:     Oleg Kolosov <bazurbat@gmail.com>
AuthorDate: Tue Oct 21 22:56:28 2014 +0400
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Fri Nov 28 07:04:52 2014 +1300

    Removed few usages of gcc extensions from runtime
    
    Moved calls to 'mark' and 'remark' macros into the corresponding 'for'
    loop bodies. These macros are expanded into a do-while statement which is
    not allowed in the loop expression position inside a 'for' loop in
    standard C. In particular, MSVC compiler considers this a syntax error.
    
    Signed-off-by: Peter Bex <peter.bex@xs4all.nl>
    Signed-off-by: Evan Hanson <evhan@foldling.org>

diff --git a/runtime.c b/runtime.c
index 7ccbb846..96cef6ab 100644
--- a/runtime.c
+++ b/runtime.c
@@ -2797,11 +2797,13 @@ C_regparm void C_fcall C_reclaim(void *trampoline, void *proc)
 
     /* Mark literal frames: */
     for(lfn = lf_list; lfn != NULL; lfn = lfn->next)
-      for(i = 0; i < lfn->count; mark(&lfn->lf[ i++ ]));
+      for(i = 0; i < lfn->count; ++i)
+        mark(&lfn->lf[i]);
 
     /* Mark symbol tables: */
     for(stp = symbol_table_list; stp != NULL; stp = stp->next)
-      for(i = 0; i < stp->size; mark(&stp->table[ i++ ]));
+      for(i = 0; i < stp->size; ++i)
+        mark(&stp->table[i]);
 
     /* Mark collectibles: */
     for(msp = collectibles; msp < collectibles_top; ++msp)
@@ -2816,14 +2818,16 @@ C_regparm void C_fcall C_reclaim(void *trampoline, void *proc)
   }
   else {
     /* Mark mutated slots: */
-    for(msp = mutation_stack_bottom; msp < mutation_stack_top; mark(*(msp++)));
+    for(msp = mutation_stack_bottom; msp < mutation_stack_top; ++msp)
+      mark(*msp);
   }
 
   /* Clear the mutated slot stack: */
   mutation_stack_top = mutation_stack_bottom;
 
   /* Mark live values: */
-  for(p = C_temporary_stack; p < C_temporary_stack_bottom; mark(p++));
+  for(p = C_temporary_stack; p < C_temporary_stack_bottom; ++p)
+    mark(p);
 
   /* Mark trace-buffer: */
   for(tinfo = trace_buffer; tinfo < trace_buffer_limit; ++tinfo) {
@@ -3299,11 +3303,13 @@ C_regparm void C_fcall C_rereclaim2(C_uword size, int double_plus)
 
   /* Mark literal frames: */
   for(lfn = lf_list; lfn != NULL; lfn = lfn->next)
-    for(i = 0; i < lfn->count; remark(&lfn->lf[ i++ ]));
+    for(i = 0; i < lfn->count; ++i)
+      remark(&lfn->lf[i]);
 
   /* Mark symbol table: */
   for(stp = symbol_table_list; stp != NULL; stp = stp->next)
-    for(i = 0; i < stp->size; remark(&stp->table[ i++ ]));
+    for(i = 0; i < stp->size; ++i)
+      remark(&stp->table[i]);
 
   /* Mark collectibles: */
   for(msp = collectibles; msp < collectibles_top; ++msp)
@@ -3318,7 +3324,8 @@ C_regparm void C_fcall C_rereclaim2(C_uword size, int double_plus)
   mutation_stack_top = mutation_stack_bottom;
 
   /* Mark live values: */
-  for(p = C_temporary_stack; p < C_temporary_stack_bottom; remark(p++));
+  for(p = C_temporary_stack; p < C_temporary_stack_bottom; ++p)
+    remark(p);
 
   /* Mark locative table: */
   for(i = 0; i < locative_table_count; ++i)
Trap