about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--new.arc8
-rw-r--r--new.arc.t6
2 files changed, 9 insertions, 5 deletions
diff --git a/new.arc b/new.arc
index 0f0b4b71..54b1ac2f 100644
--- a/new.arc
+++ b/new.arc
@@ -1,9 +1,11 @@
 ;; simple slab allocator. Intended only to carve out isolated memory for
 ;; different threads/routines as they request.
 
-(on-init
-  ((Root_allocator_pointer location) <- literal 1000)  ; 1-1000 reserved
-)
+(= Allocator_start 1000)  ; lower locations reserved
+
+(enq (fn ()
+       (run `(((Root_allocator_pointer location) <- literal ,Allocator_start))))
+     initialization-fns*)
 
 (init-fn new
   ((2 integer-address) <- copy (Root_allocator_pointer integer))
diff --git a/new.arc.t b/new.arc.t
index e256ea86..c10444de 100644
--- a/new.arc.t
+++ b/new.arc.t
@@ -5,7 +5,7 @@
 (add-fns
   '((main)))
 (run function*!main)
-(if (~iso memory* (obj Root_allocator_pointer 1000))
+(if (~iso memory*!Root_allocator_pointer Allocator_start)
   (prn "F - allocator initialized"))
 
 (reset)
@@ -15,5 +15,7 @@
       ((x integer-address deref) <- literal 34))))
 (run function*!main)
 ;? (prn memory*)
-(if (~iso memory*!Root_allocator_pointer 1001)
+(if (~iso memory*!Root_allocator_pointer (+ Allocator_start 1))
   (prn "F - 'new' increments allocator pointer"))
+(if (~iso memory*.Allocator_start 34)
+  (prn "F - 'new' returns old location"))