vm/contexts: cleanup

db4
Slava Pestov 2009-11-08 19:44:18 -06:00
parent a361e68f30
commit cb6552ae6e
2 changed files with 17 additions and 5 deletions

View File

@ -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;
} }

View File

@ -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)