diff --git a/src/lily/alloc/arena.hb b/src/lily/alloc/arena.hb index fa32fc0..8a76cc7 100644 --- a/src/lily/alloc/arena.hb +++ b/src/lily/alloc/arena.hb @@ -10,11 +10,11 @@ ArenaAllocator := struct { size: uint, allocated: uint, - $new := fn(): Self { - allocated := 0 - allocated = Target.page_size() - ptr := Target.alloc_zeroed(allocated) - return .(ptr, allocated, 0) + new := fn(): Self { + size := Target.page_size() + // todo(?): spec should accept ?Self as return type + ptr := @unwrap(Target.alloc_zeroed(size)) + return .(ptr, size, 0) } deinit := fn(self: ^Self): void { match Target.current() { @@ -55,4 +55,4 @@ ArenaAllocator := struct { } return null } -} +} \ No newline at end of file diff --git a/src/test/lily/lily.alloc.arena.hb b/src/test/lily/lily.alloc.arena.hb index fd66485..30e1aa2 100644 --- a/src/test/lily/lily.alloc.arena.hb +++ b/src/test/lily/lily.alloc.arena.hb @@ -5,8 +5,8 @@ lily := @use("../../lily/lib.hb") main := fn(argc: int, argv: [][]u8): u8 { alloc := lily.alloc.ArenaAllocator.new() + defer alloc.deinit() ptr_one := alloc.alloc(u8, 6) ptr_two := alloc.alloc(u8, 179) - alloc.deinit() return 0 -} +} \ No newline at end of file