X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=src%2Falloc.h;h=89e1dab7c83e5a04385589b4f3539201d9681a14;hb=refs%2Fheads%2Fmaster;hp=58ee8081e391dde43b3738420666453df668c6b4;hpb=58a5ffdfec139a0c9d399f603b77a764ae8607f7;p=muddle-interpreter.git diff --git a/src/alloc.h b/src/alloc.h index 58ee808..89e1dab 100644 --- a/src/alloc.h +++ b/src/alloc.h @@ -28,20 +28,25 @@ typedef int32_t heap_ptr; typedef union pool_object pool_object; typedef union object object; +typedef union uv_val uv_val; pool_object *POOL_OBJECT (pool_ptr p); object *HEAP_OBJECT (heap_ptr p); +uv_val *UV_VAL (heap_ptr p); pool_ptr pool_alloc (uint32_t len); heap_ptr heap_alloc (uint32_t len); inline static heap_ptr heap_alloc_uv (uint32_t len) { - return heap_alloc ((len + 1) >> 1); + // divide by 2 (rounding up), then add one for dope + return heap_alloc (((len + 1) >> 1) + 1); } // given a headerless array of objects of known size, -// copy it backwards into newly-allocated pool space +// copy it into newly-allocated pool space +pool_ptr pool_copy_array (const pool_object * objs, uint32_t len); +// same as above, but backwards pool_ptr pool_copy_array_rev (const pool_object * objs, uint32_t len); heap_ptr heap_copy_array_rev (const object * objs, uint32_t len);