diff runtime/func.h @ 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 04baa003de5a
line wrap: on
line diff
--- a/runtime/func.h	Thu Oct 08 22:54:39 2009 -0400
+++ b/runtime/func.h	Thu Oct 08 23:16:26 2009 -0400
@@ -121,13 +121,17 @@
 			free_stack(ct, cdata);\
 			cdata = temp_cdata;\
 			lv_ ## myname ## _AT_ ## type_name = (lt_ ## myname ## _AT_ ## type_name *)(cdata+1);
-	
-#define TCall(func, numparams)\
-	free_stack(cdata->ct, call);\
-	cdata->num_params = numparams;\
-	cdata->resume = 0;\
-	cdata->tail_func = f_ ## func;\
-	return TAIL_RETURN;
+			
+#define TPrepCall(callspace) \
+			func = cdata->lastframe->func;\
+			temp_cdata = cdata->lastframe->lastframe;\
+			free_stack(ct, cdata->lastframe);\
+			cdata = alloc_cdata(ct, temp_cdata, callspace);\
+			cdata->func = func;
+			
+#define TCall(tocall, numparams)\
+			cdata->num_params = numparams;\
+			goto sf_ ## tocall;
 	
 	
 #endif //_FUNC_H_
\ No newline at end of file