~ chicken-core (chicken-5) 266391aab91b8032e24217c8dbcfb20aa5e5132e
commit 266391aab91b8032e24217c8dbcfb20aa5e5132e
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:31:47 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 fd3a3bed..fb5d56c2 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