# Malloc ~~~ {{ :mem:invoke #15 io:scan-for io:invoke ; #0 'ALLOC const #1 'FREE const #2 'STORE const #3 'FETCH const #4 'RESIZE const ---reveal--- :mem:alloc (n--a) ALLOC mem:invoke ; :mem:store (an--) STORE mem:invoke ; :mem:fetch (a--n) FETCH mem:invoke ; :mem:free (a--) FREE mem:invoke ; :mem:resize (an--) RESIZE mem:invoke ; }} :mem:cell+ (nn-n) #8 * + ; :mem:fetch-double (n-nn) dup #1 mem:cell+ fetch push mem:fetch pop ; :mem:store-double (ann-nn) push push dup-pair #1 mem:cell+ pop mem:store pop mem:store ; 'interface/malloc.retro 'mem:alloc d:set-source 'interface/malloc.retro 'mem:store d:set-source 'interface/malloc.retro 'mem:fetch d:set-source 'interface/malloc.retro 'mem:free d:set-source 'interface/malloc.retro 'mem:size d:set-source 'interface/malloc.retro 'mem:resize d:set-source 'interface/malloc.retro 'mem:cell+ d:set-source 'interface/malloc.retro 'mem:fetch-double d:set-source 'interface/malloc.retro 'mem:store-double d:set-source ~~~