Landin library reference source

compiler/tests/fixtures/runtime/library-shared-pool/main.ldn

1import core/mem
2import core/pool
3
4exercise: () -> (ok: bool) ! mem.out_of_memory =
5    ok = false
6    mut backing: [64]u8 = zeroed
7    mut slots: [1]pool.slot = zeroed
8    mut state := try pool.over(addr backing[0], 64, 16, 1, 1, slots[0..<1])
9    address := try mem.allocate(state, usize(16), usize(1))
10    address.val = 42
11    return when address.val <> 42 or pool.live(state) <> 1
12    _ = mem.allocate(state, usize(1), usize(1)) else (problem)
13        _ = problem
14        mem.free(state, address, usize(16))
15        ok = pool.live(state) == 0 and pool.free_count(state) == 1
16        return
17    end
18end exercise
19
20public main: () -> (code: i32) =
21    code = 1
22    ok := exercise() else false
23    if ok then
24        code = 42
25    end if
26end main