shithub: sl

Download patch

ref: 04d8c503113e00b81643a2b99ae1266b63f81a6c
parent: 65795c1b052e87a3d14ad1580f6de0c30ea59010
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Thu Mar 20 03:46:44 EDT 2025

vm-stats: print to *io-out*

--- a/src/io.c
+++ b/src/io.c
@@ -6,7 +6,8 @@
 #include "io.h"
 
 static sl_v sl_linesym, sl_blocksym, sl_memorysym, sl_nonesym;
-static sl_v sl_ioinsym, sl_iooutsym;
+static sl_v sl_ioinsym;
+sl_v sl_iooutsym;
 sl_type *sl_iotype;
 
 static void
--- a/src/io.h
+++ b/src/io.h
@@ -2,4 +2,5 @@
 bool isio(sl_v v) sl_purefn;
 sl_v io_to_str(sl_v *ps);
 void io_init(void);
+extern sl_v sl_iooutsym;
 extern sl_type *sl_iotype;
--- a/src/sl.c
+++ b/src/sl.c
@@ -1186,15 +1186,16 @@
 {
 	USED(args);
 	argcount(nargs, 0);
-	ios_printf(ios_stderr, "heap total     %10"PRIuPTR" bytes\n", slg.heapsize);
-	ios_printf(ios_stderr, "heap free      %10"PRIuPTR" bytes\n", (uintptr)(slg.lim-slg.curheap));
-	ios_printf(ios_stderr, "heap used      %10"PRIuPTR" bytes\n", (uintptr)(slg.curheap-slg.fromspace));
-	ios_printf(ios_stderr, "stack          %10"PRIu64" bytes\n", (u64int)sl.nstack*sizeof(sl_v));
-	ios_printf(ios_stderr, "finalizers     %10"PRIu32"\n", (u32int)slg.nfinalizers);
-	ios_printf(ios_stderr, "max finalizers %10"PRIu32"\n", (u32int)slg.maxfinalizers);
-	ios_printf(ios_stderr, "gc handles     %10"PRIu32"\n", (u32int)slg.ngchandles);
-	ios_printf(ios_stderr, "gc calls       %10"PRIu64"\n", (u64int)slg.gccalls);
-	ios_printf(ios_stderr, "opcodes        %10d\n", N_OPCODES);
+	sl_ios *io = toio(sym_value(sl_iooutsym));
+	ios_printf(io, "heap total     %10"PRIuPTR" bytes\n", slg.heapsize);
+	ios_printf(io, "heap free      %10"PRIuPTR" bytes\n", (uintptr)(slg.lim-slg.curheap));
+	ios_printf(io, "heap used      %10"PRIuPTR" bytes\n", (uintptr)(slg.curheap-slg.fromspace));
+	ios_printf(io, "stack          %10"PRIu64" bytes\n", (u64int)sl.nstack*sizeof(sl_v));
+	ios_printf(io, "finalizers     %10"PRIu32"\n", (u32int)slg.nfinalizers);
+	ios_printf(io, "max finalizers %10"PRIu32"\n", (u32int)slg.maxfinalizers);
+	ios_printf(io, "gc handles     %10"PRIu32"\n", (u32int)slg.ngchandles);
+	ios_printf(io, "gc calls       %10"PRIu64"\n", (u64int)slg.gccalls);
+	ios_printf(io, "opcodes        %10d\n", N_OPCODES);
 	return sl_void;
 }