VM: Refactor bump_allocator.hpp to Factor style

db4
Erik Charlebois 2013-05-11 21:45:44 -04:00
parent 774326b2dc
commit 1e618e16ee
1 changed files with 30 additions and 43 deletions

View File

@ -1,50 +1,37 @@
namespace factor
{
namespace factor {
template<typename Block> struct bump_allocator {
template <typename Block> struct bump_allocator {
/* offset of 'here' and 'end' is hardcoded in compiler backends */
cell here;
cell start;
cell end;
cell size;
explicit bump_allocator(cell size_, cell start_) :
here(start_), start(start_), end(start_ + size_), size(size_) {}
explicit bump_allocator(cell size_, cell start_)
: here(start_), start(start_), end(start_ + size_), size(size_) {}
bool contains_p(Block *block)
{
return ((cell)block - start) < size;
}
bool contains_p(Block* block) { return ((cell) block - start) < size; }
Block *allot(cell size)
{
Block* allot(cell size) {
cell h = here;
here = h + align(size,data_alignment);
return (Block *)h;
here = h + align(size, data_alignment);
return (Block*)h;
}
cell occupied_space()
{
return here - start;
}
cell occupied_space() { return here - start; }
cell free_space()
{
return end - here;
}
cell free_space() { return end - here; }
cell next_object_after(cell scan)
{
cell size = ((Block *)scan)->size();
if(scan + size < here)
cell next_object_after(cell scan) {
cell size = ((Block*)scan)->size();
if (scan + size < here)
return scan + size;
else
return 0;
}
cell first_object()
{
if(start != here)
cell first_object() {
if (start != here)
return start;
else
return 0;