diff runtime/rhopefuncs_epilog.c @ 166:1bfc19076f1b

Merge
author Mike Pavone <pavone@retrodev.com>
date Thu, 10 Mar 2011 04:16:38 +0000
parents bac2c74801f0
children ba35ab624ec2
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/runtime/rhopefuncs_epilog.c	Thu Mar 10 04:16:38 2011 +0000
@@ -0,0 +1,39 @@
+
+DO_END:
+	for(idx = 0; idx < cdata->num_params; ++idx)	
+		params[idx] = cdata->params[idx];
+	free_context(ct);
+	return cdata->num_params;
+
+DO_END_THREAD:
+	for(idx = 0; idx < cdata->num_params; ++idx)
+	{ release_ref(cdata->params[idx]); }
+	if(ct->runafter)
+	{
+		temp_ct = ct;
+		ct = ct->runafter;
+		free_context(temp_ct);
+		cdata = ct->resume_cdata;
+		func = cdata->func;
+		DISPATCH
+	}
+	free_context(ct);
+	if(ct = get_cqueue())
+	{
+		cdata = ct->resume_cdata;
+		func = cdata->func;
+		DISPATCH
+	}
+NOTHING_TO_DO:
+	return 0;
+
+_exception:
+	puts("Exception! Trace follows:");
+	while(cdata && cdata->func < END)
+	{
+		printf("%d\n", cdata->func);
+		cdata = cdata->lastframe;
+	}
+	return -1;
+}
+