Mercurial > repos > rhope
annotate runtime/func.h @ 57:2174878a6e4b
Avoid unnecessary nested switch
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 08 Oct 2009 02:12:25 -0400 |
parents | d2f9b0a9403d |
children | 4c22fe798779 |
rev | line source |
---|---|
7
d61550e2c001
Added current work on new runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
1 #ifndef _FUNC_H_ |
d61550e2c001
Added current work on new runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
2 #define _FUNC_H_ |
d61550e2c001
Added current work on new runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
3 |
8
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
7
diff
changeset
|
4 typedef enum { |
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
7
diff
changeset
|
5 NORMAL_RETURN=0, |
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
7
diff
changeset
|
6 EXCEPTION_RETURN, |
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
7
diff
changeset
|
7 TAIL_RETURN, |
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
7
diff
changeset
|
8 NO_CONVERSION, |
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
7
diff
changeset
|
9 STACK_UNWIND |
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
7
diff
changeset
|
10 } returntype; |
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
7
diff
changeset
|
11 |
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
7
diff
changeset
|
12 |
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
7
diff
changeset
|
13 typedef returntype (*rhope_func)(struct calldata *); |
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
7
diff
changeset
|
14 typedef void (*special_func) (struct object *); |
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
7
diff
changeset
|
15 |
12
31f8182f3433
Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
11
diff
changeset
|
16 #define MethodName(name,type) f_ ## name ## _AT_ ## type |
7
d61550e2c001
Added current work on new runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
17 |
56
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
18 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
19 #define Func(name,numparams) \ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
20 case FUNC_ ## name:\ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
21 f_ ## name:\ |
57
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
22 for(idx = numparams; idx < cdata->num_params; ++idx)\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
23 release_ref(cdata->params[0-idx]); cdata->num_params = numparams;\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
24 lv_ ## name = alloc_stack(ct, sizeof(lt_ ## name)); |
56
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
25 |
11
3021dac0d8f5
Stack unwind is so close I can almost taste it
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
26 |
56
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
27 #define FuncNoLocals(name,numparams) \ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
28 case FUNC_ ## name:\ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
29 f_ ## name:\ |
57
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
30 for(idx = numparams; idx < cdata->num_params; ++idx)\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
31 release_ref(cdata->params[0-idx]); cdata->num_params = numparams;\ |
11
3021dac0d8f5
Stack unwind is so close I can almost taste it
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
32 |
56
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
33 #define EndFunc(name) \ |
57
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
34 free_stack(ct, lv_ ## name);\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
35 func = cdata->func;\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
36 goto _dispatch;\ |
56
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
37 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
38 #define EndFuncNoLocals \ |
57
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
39 func = cdata->func;\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
40 resume = cdata->resume;\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
41 goto _dispatch;\ |
11
3021dac0d8f5
Stack unwind is so close I can almost taste it
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
42 |
56
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
43 #define Method(name) \ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
44 case FUNC_ ## name:\ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
45 f_ ## name:\ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
46 if (cdata->num_params < 1)\ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
47 goto _exception;\ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
48 switch(get_blueprint(cdata->params[0])->type_id)\ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
49 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
50 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
51 #define EndMethod \ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
52 default:\ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
53 goto _exception;\ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
54 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
55 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
56 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
57 #define MethodDispatch(type_id,name,type_name) \ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
58 case type_id:\ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
59 goto m_ ## name ## _AT_ ## type_name; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
60 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
61 #define MethodImpl(name,type_name,mytype_id,numparams) \ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
62 case FUNC_ ## name ## _AT_ ## type_name:\ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
63 f_ ## name ## _AT_ ## type_name:\ |
57
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
64 if (cdata->num_params < 1)\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
65 goto _exception;\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
66 if(get_blueprint(cdata->params[0])->type_id != mytype_id)\ |
11
3021dac0d8f5
Stack unwind is so close I can almost taste it
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
67 {\ |
57
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
68 puts("uh oh, need conversion and that's not implemented yet!");\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
69 exit(1);\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
70 }\ |
56
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
71 m_ ## name ## _AT_ ## type_name:\ |
57
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
72 for(idx = numparams; idx < cdata->num_params; ++idx)\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
73 release_ref(cdata->params[0-idx]); cdata->num_params = numparams;\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
74 lv_ ## name ## _AT_ ## type_name = alloc_stack(ct, sizeof(lt_ ## name ## _AT_ ## type_name)); |
56
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
75 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
76 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
77 #define MethodImplNoLocals(name,type_name,mytype_id,numparams) \ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
78 case FUNC_ ## name ## _AT_ ## type_name:\ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
79 f_ ## name ## _AT_ ## type_name:\ |
57
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
80 if (cdata->num_params < 1)\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
81 goto _exception;\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
82 if(get_blueprint(cdata->params[0])->type_id != mytype_id)\ |
11
3021dac0d8f5
Stack unwind is so close I can almost taste it
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
83 {\ |
57
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
84 puts("uh oh, need conversion and that's not implemented yet!");\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
85 exit(1);\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
86 }\ |
56
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
87 m_ ## name ## _AT_ ## type_name:\ |
57
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
88 for(idx = numparams; idx < cdata->num_params; ++idx)\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
89 release_ref(cdata->params[0-idx]); cdata->num_params = numparams; |
56
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
90 |
11
3021dac0d8f5
Stack unwind is so close I can almost taste it
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
91 #define NumParams |
3021dac0d8f5
Stack unwind is so close I can almost taste it
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
92 #define CallSpace |
3021dac0d8f5
Stack unwind is so close I can almost taste it
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
93 |
12
31f8182f3433
Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
11
diff
changeset
|
94 #define Param(num,convtypeid) \ |
56
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
95 if(get_blueprint(cdata->params[0-num])->type_id != convtypeid)\ |
11
3021dac0d8f5
Stack unwind is so close I can almost taste it
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
96 {\ |
56
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
97 puts("uh oh, need conversion and that's not implemented yet!");\ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
98 exit(1);\ |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
99 } |
8
8d74ef7fa357
Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents:
7
diff
changeset
|
100 |
12
31f8182f3433
Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
11
diff
changeset
|
101 #define CopiedParam(num,convtypeid) Param(num,convtypeid) cdata->params[num] = copy_object(cdata->params[num]); |
56
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
102 #define Ret(num,val) cdata->params[0-num] = (object *)(val); |
7
d61550e2c001
Added current work on new runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
103 #define Exception |
56
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
104 #define FuncDef(name) lt_ ## name * lv_ ## name; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
105 #define MethodDef(name) lt_ ## name ## _AT_ ## type_name * lv_ ## name ## _AT_ ## type_name; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
106 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
107 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
108 #define PrepCall(callspace) cdata = alloc_cdata(ct, cdata, callspace); |
7
d61550e2c001
Added current work on new runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
109 |
56
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
110 #define SetParam(num,value) cdata->params[0-num] = value; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
111 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
112 #define Call(tocall, numparams, resumeto, myname)\ |
57
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
113 cdata->func = FUNC_ ## myname ## _ ## resumeto;\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
114 cdata->num_params = numparams;\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
115 goto f_ ## tocall;\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
116 case FUNC_ ## myname ## _ ## resumeto:\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
117 lv_ ## myname = (lt_ ## myname *)(cdata->lastframe+1); |
35
3498713c3dc9
C backend portion of supporting user defined types is done, but untested. Parser/NWorker still need a fair bit of work
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
118 |
56
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
119 #define FreeCall\ |
57
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
120 temp_cdata = cdata->lastframe;\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
121 free_stack(ct, cdata);\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
122 cdata = temp_cdata; |
7
d61550e2c001
Added current work on new runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
123 |
56
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
35
diff
changeset
|
124 #define FreeCallMethod(myname,mytype)\ |
57
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
125 temp_cdata = cdata->lastframe;\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
126 free_stack(ct, cdata);\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
127 cdata = temp_cdata;\ |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
128 lv_ ## myname ## _AT_ ## type_name = (lt_ ## myname ## _AT_ ## type_name *)(cdata+1); |
12
31f8182f3433
Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
11
diff
changeset
|
129 |
31f8182f3433
Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
11
diff
changeset
|
130 #define TCall(func, numparams)\ |
31f8182f3433
Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
11
diff
changeset
|
131 free_stack(cdata->ct, call);\ |
31f8182f3433
Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
11
diff
changeset
|
132 cdata->num_params = numparams;\ |
31f8182f3433
Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
11
diff
changeset
|
133 cdata->resume = 0;\ |
31f8182f3433
Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
11
diff
changeset
|
134 cdata->tail_func = f_ ## func;\ |
31f8182f3433
Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
11
diff
changeset
|
135 return TAIL_RETURN; |
31f8182f3433
Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
11
diff
changeset
|
136 |
31f8182f3433
Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
11
diff
changeset
|
137 |
7
d61550e2c001
Added current work on new runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
138 #endif //_FUNC_H_ |