~ 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