vm/contexts: cleanup
parent
a361e68f30
commit
cb6552ae6e
|
@ -3,6 +3,20 @@
|
||||||
namespace factor
|
namespace factor
|
||||||
{
|
{
|
||||||
|
|
||||||
|
context::context(cell ds_size, cell rs_size) :
|
||||||
|
callstack_top(NULL),
|
||||||
|
callstack_bottom(NULL),
|
||||||
|
datastack(0),
|
||||||
|
retainstack(0),
|
||||||
|
datastack_save(0),
|
||||||
|
retainstack_save(0),
|
||||||
|
magic_frame(NULL),
|
||||||
|
datastack_region(new segment(ds_size,false)),
|
||||||
|
retainstack_region(new segment(rs_size,false)),
|
||||||
|
catchstack_save(0),
|
||||||
|
current_callback_save(0),
|
||||||
|
next(NULL) {}
|
||||||
|
|
||||||
void factor_vm::reset_datastack()
|
void factor_vm::reset_datastack()
|
||||||
{
|
{
|
||||||
ds = ds_bot - sizeof(cell);
|
ds = ds_bot - sizeof(cell);
|
||||||
|
@ -42,11 +56,7 @@ context *factor_vm::alloc_context()
|
||||||
unused_contexts = unused_contexts->next;
|
unused_contexts = unused_contexts->next;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
new_context = new context(ds_size,rs_size);
|
||||||
new_context = new context;
|
|
||||||
new_context->datastack_region = new segment(ds_size,false);
|
|
||||||
new_context->retainstack_region = new segment(rs_size,false);
|
|
||||||
}
|
|
||||||
|
|
||||||
return new_context;
|
return new_context;
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,6 +46,8 @@ struct context {
|
||||||
cell current_callback_save;
|
cell current_callback_save;
|
||||||
|
|
||||||
context *next;
|
context *next;
|
||||||
|
|
||||||
|
context(cell ds_size, cell rs_size);
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ds_bot (ctx->datastack_region->start)
|
#define ds_bot (ctx->datastack_region->start)
|
||||||
|
|
Loading…
Reference in New Issue