comparison runtime/fib.c @ 61:fa24ef3b026f

Added macro for tail calls with new C strategy
author Mike Pavone <pavone@retrodev.com>
date Thu, 08 Oct 2009 23:16:26 -0400
parents 4f1ae6eb71d8
children
comparison
equal deleted inserted replaced
60:b2a95ab818d3 61:fa24ef3b026f
18 FUNC_Fib_2, 18 FUNC_Fib_2,
19 FUNC_Fib_3, 19 FUNC_Fib_3,
20 FUNC_Fib_4, 20 FUNC_Fib_4,
21 FUNC_Fib_5, 21 FUNC_Fib_5,
22 FUNC_Fib_6, 22 FUNC_Fib_6,
23 FUNC_Fib_7,
24 FUNC_If, 23 FUNC_If,
25 FUNC_If_AT_Yes_SP_No, 24 FUNC_If_AT_Yes_SP_No,
26 FUNC_Main, 25 FUNC_Main,
27 FUNC_Main_1, 26 FUNC_Main_1,
28 FUNC_Main_2, 27 FUNC_Main_2,
42 case FUNC_Fib_2: goto r2_Fib;\ 41 case FUNC_Fib_2: goto r2_Fib;\
43 case FUNC_Fib_3: goto r3_Fib;\ 42 case FUNC_Fib_3: goto r3_Fib;\
44 case FUNC_Fib_4: goto r4_Fib;\ 43 case FUNC_Fib_4: goto r4_Fib;\
45 case FUNC_Fib_5: goto r5_Fib;\ 44 case FUNC_Fib_5: goto r5_Fib;\
46 case FUNC_Fib_6: goto r6_Fib;\ 45 case FUNC_Fib_6: goto r6_Fib;\
47 case FUNC_Fib_7: goto r7_Fib;\
48 case FUNC_If: goto f_If;\ 46 case FUNC_If: goto f_If;\
49 case FUNC_If_AT_Yes_SP_No: goto f_If_AT_Yes_SP_No;\ 47 case FUNC_If_AT_Yes_SP_No: goto f_If_AT_Yes_SP_No;\
50 case FUNC_Main: goto f_Main;\ 48 case FUNC_Main: goto f_Main;\
51 case FUNC_Main_1: goto r1_Main;\ 49 case FUNC_Main_1: goto r1_Main;\
52 case FUNC_Main_2: goto r2_Main;\ 50 case FUNC_Main_2: goto r2_Main;\
205 NumParams 1, 6, Fib) 203 NumParams 1, 6, Fib)
206 lv_Fib->____result__10__0 = cdata->params[0]; 204 lv_Fib->____result__10__0 = cdata->params[0];
207 } 205 }
208 if(lv_Fib->____result__0__1) 206 if(lv_Fib->____result__0__1)
209 { 207 {
210 SetParam(0, add_ref(lv_Fib->____result__6__0)) 208 if(lv_Fib->____result__0__0)
211 SetParam(1, add_ref(lv_Fib->____result__10__0)) 209 {
212 Call(_PL_, 210 release_ref(lv_Fib->____result__0__0);
213 NumParams 2, 7, Fib) 211 }
214 lv_Fib->____result__5__0 = cdata->params[0]; 212 if(lv_Fib->____result__0__1)
213 {
214 release_ref(lv_Fib->____result__0__1);
215 }
216 if(lv_Fib->____result__1__0)
217 {
218 release_ref(lv_Fib->____result__1__0);
219 }
220 if(lv_Fib->____result__7__0)
221 {
222 release_ref(lv_Fib->____result__7__0);
223 }
224 if(lv_Fib->____result__11__0)
225 {
226 release_ref(lv_Fib->____result__11__0);
227 }
228 TPrepCall(2)
229 SetParam(0, lv_Fib->____result__6__0)
230 SetParam(1, lv_Fib->____result__10__0)
231 TCall(_PL_,
232 NumParams 2)
233 //lv_Fib->____result__5__0 = cdata->params[0];
215 } 234 }
216 FreeCall 235 FreeCall
217 if(lv_Fib->____result__0__1) 236 if(lv_Fib->____result__0__1)
218 { 237 {
219 lv_Fib->out = add_ref(lv_Fib->____result__5__0); 238 lv_Fib->out = add_ref(lv_Fib->____result__5__0);