summaryrefslogtreecommitdiff
path: root/src/libzisp/gc.zig
blob: 92b4387faf45f9d597bd919b7962af4d83da81e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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");
}