]> gitweb.factorcode.org Git - factor.git/commitdiff
vm/contexts: cleanup
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Mon, 9 Nov 2009 01:44:18 +0000 (19:44 -0600)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Mon, 9 Nov 2009 01:44:18 +0000 (19:44 -0600)
vm/contexts.cpp
vm/contexts.hpp

index 16b882f2cc442e4e2db46d04d8713fec46a73e4d..f5fac1119ef54630a96d66a3f8c6bcad8bced9a4 100644 (file)
@@ -3,6 +3,20 @@
 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()
 {
        ds = ds_bot - sizeof(cell);
@@ -42,11 +56,7 @@ context *factor_vm::alloc_context()
                unused_contexts = unused_contexts->next;
        }
        else
-       {
-               new_context = new context;
-               new_context->datastack_region = new segment(ds_size,false);
-               new_context->retainstack_region = new segment(rs_size,false);
-       }
+               new_context = new context(ds_size,rs_size);
 
        return new_context;
 }
index aa6f9ec8cecf7a9fc966ce670d3b35940eb4594d..ddbae5de78baefbaa212c1d862e09f95ce66ffc7 100644 (file)
@@ -46,6 +46,8 @@ struct context {
        cell current_callback_save;
 
        context *next;
+
+       context(cell ds_size, cell rs_size);
 };
 
 #define ds_bot (ctx->datastack_region->start)