]> gitweb.factorcode.org Git - factor.git/commitdiff
VM: better init of stdin, stdout and stderr
authorBjörn Lindqvist <bjourne@gmail.com>
Mon, 21 Nov 2016 19:40:25 +0000 (20:40 +0100)
committerBjörn Lindqvist <bjourne@gmail.com>
Mon, 21 Nov 2016 19:40:25 +0000 (20:40 +0100)
vm/factor.cpp
vm/io.cpp
vm/vm.hpp

index 89130caced6e27440ac1301ec56870c9646114f6..7ef57d1f1270f134379fa8d9f55a96dfc3a415c8 100644 (file)
@@ -71,13 +71,15 @@ void factor_vm::init_factor(vm_parameters* p) {
   init_contexts(p->datastack_size, p->retainstack_size, p->callstack_size);
   callbacks = new callback_heap(p->callback_size, this);
   load_image(p);
-  init_c_io();
   max_pic_size = (int)p->max_pic_size;
   special_objects[OBJ_CELL_SIZE] = tag_fixnum(sizeof(cell));
   special_objects[OBJ_ARGS] = false_object;
   special_objects[OBJ_EMBEDDED] = false_object;
 
   cell aliens[][2] = {
+    {OBJ_STDIN,           (cell)stdin},
+    {OBJ_STDOUT,          (cell)stdout},
+    {OBJ_STDERR,          (cell)stderr},
     {OBJ_CPU,             (cell)FACTOR_CPU_STRING},
     {OBJ_EXECUTABLE,      (cell)safe_strdup(p->executable_path)},
     {OBJ_IMAGE,           (cell)safe_strdup(p->image_path)},
index 6f768b034c9ef0e66b5cc22ed01ff325a048ab9f..ec3e2c0230f6884e5268d75a76c52fc79fcec8c9 100644 (file)
--- a/vm/io.cpp
+++ b/vm/io.cpp
@@ -41,13 +41,6 @@ int raw_fclose(FILE* stream) {
   return 0;
 }
 
-
-void factor_vm::init_c_io() {
-  special_objects[OBJ_STDIN] = allot_alien(false_object, (cell)stdin);
-  special_objects[OBJ_STDOUT] = allot_alien(false_object, (cell)stdout);
-  special_objects[OBJ_STDERR] = allot_alien(false_object, (cell)stderr);
-}
-
 // Allocates memory
 void factor_vm::io_error_if_not_EINTR() {
   if (errno == EINTR)
index e2a7872e412935466819202d163b1a6e977d059e..1fdff17b77ec543a0ead4609744970bc62e88731 100644 (file)
--- a/vm/vm.hpp
+++ b/vm/vm.hpp
@@ -527,7 +527,6 @@ struct factor_vm {
   }
 
   // io
-  void init_c_io();
   void io_error_if_not_EINTR();
   FILE* safe_fopen(char* filename, const char* mode);
   int safe_fgetc(FILE* stream);