summaryrefslogtreecommitdiff
path: root/src/libzisp/gc.zig
diff options
context:
space:
mode:
authorTaylan Kammer <taylan.kammer@gmail.com>2025-03-02 22:13:31 +0100
committerTaylan Kammer <taylan.kammer@gmail.com>2025-03-02 22:13:31 +0100
commitfbcedd74510b02a8a56acfbb3fb115394fcbdfd8 (patch)
tree0ef5e76f063d59582e871f11818927ad0646c9f4 /src/libzisp/gc.zig
parent45ed12c1bcb8db5cb35c35495023ffaf24e2877c (diff)
use mem pool for cons
Diffstat (limited to 'src/libzisp/gc.zig')
-rw-r--r--src/libzisp/gc.zig10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/libzisp/gc.zig b/src/libzisp/gc.zig
index 6704102..92b4387 100644
--- a/src/libzisp/gc.zig
+++ b/src/libzisp/gc.zig
@@ -2,11 +2,21 @@ const std = @import("std");
const value = @import("value.zig");
+const Value = value.Value;
const Hval = value.Hval;
var _gpa: std.heap.GeneralPurposeAllocator(.{}) = .init;
const gpa = _gpa.allocator();
+var cpool = std.heap.MemoryPool([2]Value).init(gpa);
+
+pub fn cons(v1: Value, v2: Value) *[2]Value {
+ const mem = cpool.create() catch @panic("OOM");
+ mem[0] = v1;
+ mem[1] = v2;
+ return mem;
+}
+
pub fn alloc(count: usize) []Hval {
return gpa.alloc(Hval, count) catch @panic("OOM");
}