diff options
Diffstat (limited to 'src/libzisp/gc.zig')
| -rw-r--r-- | src/libzisp/gc.zig | 10 |
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"); } |
