added: `core.alloc.arena.auto_temp()`
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 8 Mar 2023 20:38:07 +0000 (14:38 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 8 Mar 2023 20:38:07 +0000 (14:38 -0600)
core/alloc/arena.onyx

index 13e91135f7ce93b1108b6cdf55ec6dcca7e13dfa..d9ef2a473196431bdd8da0e5468930dfa9d8a195 100644 (file)
@@ -181,3 +181,16 @@ auto :: #match {
         return 0;
     }
 }
+
+auto_temp :: macro (body: Code) -> i32 {
+    use core.alloc {arena, heap_allocator}
+    a := arena.make(heap_allocator, 32 * 1024);
+
+    old_allocator := context.temp_allocator;
+    context.temp_allocator = arena.make_allocator(&a);
+
+    #unquote body;
+
+    arena.free(&a);
+    context.temp_allocator = old_allocator;
+}