VM: Refactor bump_allocator.hpp to Factor style
parent
774326b2dc
commit
1e618e16ee
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue