namespace factor { struct zone { /* offset of 'here' and 'end' is hardcoded in compiler backends */ cell here; cell start; cell end; cell size; zone(cell size_, cell start_) : here(0), start(start_), end(start_ + size_), size(size_) {} inline bool contains_p(object *pointer) { return ((cell)pointer - start) < size; } inline object *allot(cell size) { cell h = here; here = h + align8(size); return (object *)h; } }; }