annotate runtime/func.h @ 65:1db811fa4744

Handle native Rhope functions and plain C functions separately as part of move to new C strategy
author Mike Pavone <pavone@retrodev.com>
date Tue, 01 Jun 2010 01:13:54 -0400
parents 04baa003de5a
children d4b44ae2e34a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
53
70af7fa155d0 Cleaned up some C warnings and added a simple compile script
Mike Pavone <pavone@retrodev.com>
parents: 48
diff changeset
4 typedef struct object object;
70af7fa155d0 Cleaned up some C warnings and added a simple compile script
Mike Pavone <pavone@retrodev.com>
parents: 48
diff changeset
5 typedef struct calldata calldata;
70af7fa155d0 Cleaned up some C warnings and added a simple compile script
Mike Pavone <pavone@retrodev.com>
parents: 48
diff changeset
6
8
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents: 7
diff changeset
7 typedef enum {
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents: 7
diff changeset
8 NORMAL_RETURN=0,
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents: 7
diff changeset
9 EXCEPTION_RETURN,
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents: 7
diff changeset
10 TAIL_RETURN,
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents: 7
diff changeset
11 NO_CONVERSION,
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents: 7
diff changeset
12 STACK_UNWIND
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents: 7
diff changeset
13 } returntype;
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents: 7
diff changeset
14
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents: 7
diff changeset
15
53
70af7fa155d0 Cleaned up some C warnings and added a simple compile script
Mike Pavone <pavone@retrodev.com>
parents: 48
diff changeset
16 typedef returntype (*rhope_func)(calldata *);
70af7fa155d0 Cleaned up some C warnings and added a simple compile script
Mike Pavone <pavone@retrodev.com>
parents: 48
diff changeset
17 typedef void (*special_func) (object *);
8
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents: 7
diff changeset
18
48
a24eb366195c Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
19 #define MethodName(name,type) f_ ## name ## AT_ ## type
7
d61550e2c001 Added current work on new runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
20
56
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
21
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
22 #define Func(name,numparams) \
59
4f1ae6eb71d8 Use replicated switch statement for returns and late-bound calls
Mike Pavone <pavone@retrodev.com>
parents: 58
diff changeset
23 f_ ## name:\
57
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
24 for(idx = numparams; idx < cdata->num_params; ++idx)\
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
25 release_ref(cdata->params[0-idx]); cdata->num_params = numparams;\
59
4f1ae6eb71d8 Use replicated switch statement for returns and late-bound calls
Mike Pavone <pavone@retrodev.com>
parents: 58
diff changeset
26 sf_ ## name:\
57
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
27 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
28
11
3021dac0d8f5 Stack unwind is so close I can almost taste it
Mike Pavone <pavone@retrodev.com>
parents: 9
diff changeset
29
56
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
30 #define FuncNoLocals(name,numparams) \
59
4f1ae6eb71d8 Use replicated switch statement for returns and late-bound calls
Mike Pavone <pavone@retrodev.com>
parents: 58
diff changeset
31 f_ ## name:\
57
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
32 for(idx = numparams; idx < cdata->num_params; ++idx)\
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
33 release_ref(cdata->params[0-idx]); cdata->num_params = numparams;\
59
4f1ae6eb71d8 Use replicated switch statement for returns and late-bound calls
Mike Pavone <pavone@retrodev.com>
parents: 58
diff changeset
34 sf_ ## name:
11
3021dac0d8f5 Stack unwind is so close I can almost taste it
Mike Pavone <pavone@retrodev.com>
parents: 9
diff changeset
35
56
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
36 #define EndFunc(name) \
57
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
37 free_stack(ct, lv_ ## name);\
59
4f1ae6eb71d8 Use replicated switch statement for returns and late-bound calls
Mike Pavone <pavone@retrodev.com>
parents: 58
diff changeset
38 func = cdata->func;
56
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
39
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
40 #define EndFuncNoLocals \
59
4f1ae6eb71d8 Use replicated switch statement for returns and late-bound calls
Mike Pavone <pavone@retrodev.com>
parents: 58
diff changeset
41 func = cdata->func;
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 f_ ## name:\
59
4f1ae6eb71d8 Use replicated switch statement for returns and late-bound calls
Mike Pavone <pavone@retrodev.com>
parents: 58
diff changeset
45 sf_ ## name:\
56
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
46 switch(get_blueprint(cdata->params[0])->type_id)\
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
47 {
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
48
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
49 #define EndMethod \
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
50 default:\
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
51 goto _exception;\
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
52 }
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
53
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 #define MethodDispatch(type_id,name,type_name) \
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
56 case type_id:\
65
1db811fa4744 Handle native Rhope functions and plain C functions separately as part of move to new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 63
diff changeset
57 goto m_ ## name ## AT_ ## type_name;
56
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
58
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
59 #define MethodImpl(name,type_name,mytype_id,numparams) \
65
1db811fa4744 Handle native Rhope functions and plain C functions separately as part of move to new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 63
diff changeset
60 f_ ## name ## AT_ ## type_name:\
1db811fa4744 Handle native Rhope functions and plain C functions separately as part of move to new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 63
diff changeset
61 sf_ ## name ## AT_ ## type_name:\
57
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
62 if (cdata->num_params < 1)\
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
63 goto _exception;\
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
64 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
65 {\
57
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
66 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
67 exit(1);\
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
68 }\
65
1db811fa4744 Handle native Rhope functions and plain C functions separately as part of move to new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 63
diff changeset
69 m_ ## name ## AT_ ## type_name:\
57
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
70 for(idx = numparams; idx < cdata->num_params; ++idx)\
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
71 release_ref(cdata->params[0-idx]); cdata->num_params = numparams;\
65
1db811fa4744 Handle native Rhope functions and plain C functions separately as part of move to new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 63
diff changeset
72 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
73
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
74
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
75 #define MethodImplNoLocals(name,type_name,mytype_id,numparams) \
65
1db811fa4744 Handle native Rhope functions and plain C functions separately as part of move to new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 63
diff changeset
76 f_ ## name ## AT_ ## type_name:\
1db811fa4744 Handle native Rhope functions and plain C functions separately as part of move to new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 63
diff changeset
77 sf_ ## name ## AT_ ## type_name:\
57
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
78 if (cdata->num_params < 1)\
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
79 goto _exception;\
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
80 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
81 {\
57
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
82 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
83 exit(1);\
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
84 }\
65
1db811fa4744 Handle native Rhope functions and plain C functions separately as part of move to new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 63
diff changeset
85 m_ ## name ## AT_ ## type_name:\
57
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
86 for(idx = numparams; idx < cdata->num_params; ++idx)\
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
87 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
88
11
3021dac0d8f5 Stack unwind is so close I can almost taste it
Mike Pavone <pavone@retrodev.com>
parents: 9
diff changeset
89 #define NumParams
3021dac0d8f5 Stack unwind is so close I can almost taste it
Mike Pavone <pavone@retrodev.com>
parents: 9
diff changeset
90 #define CallSpace
3021dac0d8f5 Stack unwind is so close I can almost taste it
Mike Pavone <pavone@retrodev.com>
parents: 9
diff changeset
91
12
31f8182f3433 Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents: 11
diff changeset
92 #define Param(num,convtypeid) \
56
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
93 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
94 {\
56
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
95 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
96 exit(1);\
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
97 }
8
8d74ef7fa357 Improved helper macros and added separate Rhope stack in runtime
Mike Pavone <pavone@retrodev.com>
parents: 7
diff changeset
98
12
31f8182f3433 Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents: 11
diff changeset
99 #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
100 #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
101 #define Exception
56
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
102 #define FuncDef(name) lt_ ## name * lv_ ## name;
65
1db811fa4744 Handle native Rhope functions and plain C functions separately as part of move to new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 63
diff changeset
103 #define MethodDef(name) lt_ ## name ## AT_ ## type_name * lv_ ## name ## AT_ ## type_name;
56
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
104
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
105
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
106 #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
107
56
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
108 #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
109
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
110 #define Call(tocall, numparams, resumeto, myname)\
57
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
111 cdata->func = FUNC_ ## myname ## _ ## resumeto;\
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
112 cdata->num_params = numparams;\
59
4f1ae6eb71d8 Use replicated switch statement for returns and late-bound calls
Mike Pavone <pavone@retrodev.com>
parents: 58
diff changeset
113 goto sf_ ## tocall;\
4f1ae6eb71d8 Use replicated switch statement for returns and late-bound calls
Mike Pavone <pavone@retrodev.com>
parents: 58
diff changeset
114 r ## resumeto ## _ ## myname:\
57
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
115 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
116
56
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
117 #define FreeCall\
57
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
118 temp_cdata = cdata->lastframe;\
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
119 free_stack(ct, cdata);\
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
120 cdata = temp_cdata;
7
d61550e2c001 Added current work on new runtime
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
121
56
d2f9b0a9403d Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
122 #define FreeCallMethod(myname,mytype)\
57
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
123 temp_cdata = cdata->lastframe;\
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
124 free_stack(ct, cdata);\
2174878a6e4b Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents: 56
diff changeset
125 cdata = temp_cdata;\
65
1db811fa4744 Handle native Rhope functions and plain C functions separately as part of move to new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 63
diff changeset
126 lv_ ## myname ## AT_ ## type_name = (lt_ ## myname ## AT_ ## type_name *)(cdata+1);
61
fa24ef3b026f Added macro for tail calls with new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 59
diff changeset
127
fa24ef3b026f Added macro for tail calls with new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 59
diff changeset
128 #define TPrepCall(callspace) \
fa24ef3b026f Added macro for tail calls with new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 59
diff changeset
129 func = cdata->lastframe->func;\
fa24ef3b026f Added macro for tail calls with new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 59
diff changeset
130 temp_cdata = cdata->lastframe->lastframe;\
fa24ef3b026f Added macro for tail calls with new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 59
diff changeset
131 free_stack(ct, cdata->lastframe);\
fa24ef3b026f Added macro for tail calls with new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 59
diff changeset
132 cdata = alloc_cdata(ct, temp_cdata, callspace);\
fa24ef3b026f Added macro for tail calls with new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 59
diff changeset
133 cdata->func = func;
fa24ef3b026f Added macro for tail calls with new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 59
diff changeset
134
fa24ef3b026f Added macro for tail calls with new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 59
diff changeset
135 #define TCall(tocall, numparams)\
fa24ef3b026f Added macro for tail calls with new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 59
diff changeset
136 cdata->num_params = numparams;\
fa24ef3b026f Added macro for tail calls with new C strategy
Mike Pavone <pavone@retrodev.com>
parents: 59
diff changeset
137 goto sf_ ## tocall;
12
31f8182f3433 Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents: 11
diff changeset
138
31f8182f3433 Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents: 11
diff changeset
139
48
a24eb366195c Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents: 35
diff changeset
140 #endif //_FUNC_H_