diff test/test.c @ 11:3021dac0d8f5

Stack unwind is so close I can almost taste it
author Mike Pavone <pavone@retrodev.com>
date Tue, 19 May 2009 23:29:55 -0400
parents 8d74ef7fa357
children 31f8182f3433
line wrap: on
line diff
--- a/test/test.c	Sat May 16 23:24:24 2009 -0400
+++ b/test/test.c	Tue May 19 23:29:55 2009 -0400
@@ -5,26 +5,15 @@
 #include "context.h"
 #include "func.h"
 
-FuncNoLocals(Main,0)
-	call = alloc_cdata(cdata->ct,2);
+FuncNoLocals(Main,
+	NumParams 0,
+	CallSpace 2)
 	call->params[0] = make_Int32(2);
 	call->params[1] = make_Int32(3);
-	call->num_params = 2;
-	ret = call_method(METHOD_ADD, call);
-	while(ret == TAIL_RETURN)
-		ret = call->tail_func(call);
-	if(ret == EXCEPTION_RETURN) {
-		Ret(0,call->params[0]);
-		return ret;
-	}
+	MCall(METHOD_ADD, 2)
+	
 	call->params[1] = make_Int32(1);
-	ret = call_method(METHOD_SUB, call);
-	while(ret == TAIL_RETURN)
-		ret = call->tail_func(call);
-	if(ret == EXCEPTION_RETURN) {
-		Ret(0,call->params[0]);
-		return ret;
-	}
+	MCall(METHOD_SUB, 2)
 	Ret(0,call->params[0])
 EndFunc
 
@@ -38,6 +27,7 @@
 	ct = new_context();
 	cdata = alloc_cdata(ct, 1);
 	cdata->num_params = 0;
+	cdata->resume = 0;
 	ret = _f_Main(cdata);
 	while(ret == TAIL_RETURN)
 		ret = cdata->tail_func(cdata);