diff CbC-examples/quicksort/quicksort_cbc.cbc @ 23:775dfe898662

add quicksort version 2.
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Wed, 14 Oct 2009 12:12:51 +0900
parents 0eb6cac880f0
children f37d7058d1ce
line wrap: on
line diff
--- a/CbC-examples/quicksort/quicksort_cbc.cbc	Tue Oct 13 17:15:58 2009 +0900
+++ b/CbC-examples/quicksort/quicksort_cbc.cbc	Wed Oct 14 12:12:51 2009 +0900
@@ -23,7 +23,7 @@
 {
 	framep fp = (framep)sp;
 	sp += fp->size;
-	fp->code(fp->interface, sp);
+	goto fp->code(fp->interface, sp);
 }
 
 __code quicksort_start(void *arg, stack sp)
@@ -118,6 +118,7 @@
 }
 /* recursive call routine end. */
 
+#define STACK_SIZE 10240
 int v[100];
 struct qs_if *outif;
 
@@ -130,14 +131,14 @@
 quicksort(int *v, int s, int e,  RET ret, void *arg )
 {
 	framep fp;
-	stack sp = malloc(10240)+10240;
+	stack sp = malloc(STACK_SIZE)+STACK_SIZE;
 	struct qs *finish_if;
 	
 	/* interface for quicksort_finish.  */
 	finish_if = (sp -= sizeof(*finish_if));
 	finish_if->ret = ret;
 	finish_if->ret_arg = arg;
-	finish_if->sp = sp -10240 + sizeof(*finish_if);
+	finish_if->sp = sp -STACK_SIZE + sizeof(*finish_if);
 
 	/* interface for quicksort_start.  */
 	outif = (sp -= sizeof(*outif));