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