shithub: sl

Download patch

ref: 49b352fcd5ec7cca5f34b5f417e79211d7384291
parent: d5fd9c48d7c5542f6059bdb0d65b973249dc474a
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Thu Feb 6 21:53:40 EST 2025

fl_gc: bool

--- a/src/cvalues.c
+++ b/src/cvalues.c
@@ -113,7 +113,7 @@
 			add_finalizer(pcv);
 	}else{
 		if(FL(malloc_pressure) > ALLOC_LIMIT_TRIGGER)
-			fl_gc(0);
+			fl_gc(false);
 		pcv = alloc_words(CVALUE_NWORDS);
 		pcv->type = type;
 		pcv->data = MEM_ALLOC(sz);
--- a/src/flisp.c
+++ b/src/flisp.c
@@ -67,7 +67,7 @@
 fl_exit(int status)
 {
 	FL(exiting) = true;
-	fl_gc(0);
+	fl_gc(false);
 	exit(status);
 }
 
@@ -286,7 +286,7 @@
 	cons_t *c;
 
 	if(fl_unlikely(FL(curheap) > FL(lim)))
-		fl_gc(0);
+		fl_gc(false);
 	c = (cons_t*)FL(curheap);
 	FL(curheap) += sizeof(cons_t);
 	return tagptr(c, TAG_CONS);
@@ -305,9 +305,9 @@
 		n++;
 #endif
 	if(fl_unlikely((value_t*)FL(curheap) > (value_t*)FL(lim)+2-n)){
-		fl_gc(0);
+		fl_gc(false);
 		while(fl_unlikely((value_t*)FL(curheap) > ((value_t*)FL(lim))+2-n))
-			fl_gc(1);
+			fl_gc(true);
 	}
 	first = (value_t*)FL(curheap);
 	FL(curheap) += n*sizeof(value_t);
@@ -454,7 +454,7 @@
 }
 
 void
-fl_gc(int mustgrow)
+fl_gc(bool mustgrow)
 {
 	void *temp;
 	uint32_t i, f, top;
@@ -538,7 +538,7 @@
 		// all data was live; gc again and grow heap.
 		// but also always leave at least 4 words available, so a closure
 		// can be allocated without an extra check.
-		fl_gc(0);
+		fl_gc(false);
 	}
 }
 
@@ -996,7 +996,7 @@
 {
 	USED(args);
 	argcount(nargs, 0);
-	fl_gc(0);
+	fl_gc(false);
 	return FL_void;
 }
 
@@ -1031,7 +1031,7 @@
 	if(ms < 0)
 		lerrorf(FL_ArgError, "invalid bytecode");
 	PUT_INT32(data, ms);
-	function_t *fn = alloc_words(4);
+	function_t *fn = alloc_words(sizeof(function_t)/sizeof(value_t));
 	value_t fv = tagptr(fn, TAG_FUNCTION);
 	fn->bcode = args[0];
 	fn->vals = args[1];
--- a/src/flisp.h
+++ b/src/flisp.h
@@ -185,7 +185,7 @@
 
 /* collector */
 value_t relocate(value_t v) fl_hotfn;
-void fl_gc(int mustgrow);
+void fl_gc(bool mustgrow);
 void fl_grow_stack(void);
 void fl_gc_handle(value_t *pv);
 void fl_free_gc_handles(uint32_t n);
--- a/src/read.c
+++ b/src/read.c
@@ -396,7 +396,7 @@
 	if(s > 0 && rewrite_refs){
 		((size_t*)ptr(v))[0] |= 0x1;
 		vector_elt(v, 0) = newv;
-		fl_gc(0);
+		fl_gc(false);
 	}
 	return POP();
 }