diff runtime/integer.c @ 12:31f8182f3433

Finished fib test and did some small work on the c backend
author Mike Pavone <pavone@retrodev.com>
date Mon, 25 May 2009 23:34:36 -0400
parents 3021dac0d8f5
children ea991f95ae1f
line wrap: on
line diff
--- a/runtime/integer.c	Tue May 19 23:29:55 2009 -0400
+++ b/runtime/integer.c	Mon May 25 23:34:36 2009 -0400
@@ -1,16 +1,17 @@
 #include "integer.h"
 #include "builtin.h"
 #include "context.h"
+#include "bool.h"
 
-#define left ((_t_Int32 *)cdata->params[0])
-#define right ((_t_Int32 *)cdata->params[1])
+#define left ((t_Int32 *)cdata->params[0])
+#define right ((t_Int32 *)cdata->params[1])
 
 MethodNoLocals(_PL_,Int32,
     NumParams 2,
     CallSpace 1)
     
-	CopiedParam(0, left, Int32, TYPE_INT32)
-	Param(1, right, Int32, TYPE_INT32)
+	CopiedParam(0, TYPE_INT32)
+	Param(1, TYPE_INT32)
 	
 	left->num += right->num;
 	
@@ -21,19 +22,55 @@
     NumParams 2,
     CallSpace 1)
     
-	CopiedParam(0, left, Int32, TYPE_INT32)
-	Param(1, right, Int32, TYPE_INT32)
+	CopiedParam(0, TYPE_INT32)
+	Param(1, TYPE_INT32)
 	
 	left->num -= right->num;
 	
 	release_ref((object *)right);
 EndFunc
 
+MethodNoLocals(_LT_,Int32,
+	NumParams 2,
+	CallSpace 1)
+	
+	Param(0, TYPE_INT32)
+	Param(1, TYPE_INT32)
+	
+	if(left->num < right->num)
+	{
+		release_ref(cdata->params[0]);
+		Ret(0, Yes)
+	} else {
+		release_ref(cdata->params[0]);
+		Ret(0, No)
+	}
+	release_ref(cdata->params[0]);
+EndFunc
+
+MethodNoLocals(_GT_,Int32,
+	NumParams 2,
+	CallSpace 1)
+	
+	Param(0, TYPE_INT32)
+	Param(1, TYPE_INT32)
+	
+	if(left->num > right->num)
+	{
+		release_ref(cdata->params[0]);
+		Ret(0, Yes)
+	} else {
+		release_ref(cdata->params[0]);
+		Ret(0, No)
+	}
+	release_ref(cdata->params[0]);
+EndFunc
+
 object * make_Int32(int32_t val)
 {
-	_t_Int32 * obj;
+	t_Int32 * obj;
 	object * ret = new_object(TYPE_INT32);
-	obj = (_t_Int32 *)ret;
+	obj = (t_Int32 *)ret;
 	obj->num = val;
 	return ret;
 }