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();
}