VM: nicer way of initializing those special objects that are aliens
parent
cee0b19324
commit
84ec2164c2
|
@ -142,22 +142,24 @@ void factor_vm::init_factor(vm_parameters* p) {
|
||||||
load_image(p);
|
load_image(p);
|
||||||
init_c_io();
|
init_c_io();
|
||||||
init_inline_caching((int)p->max_pic_size);
|
init_inline_caching((int)p->max_pic_size);
|
||||||
special_objects[OBJ_CPU] =
|
|
||||||
allot_alien(false_object, (cell)FACTOR_CPU_STRING);
|
|
||||||
special_objects[OBJ_OS] = allot_alien(false_object, (cell)FACTOR_OS_STRING);
|
|
||||||
special_objects[OBJ_CELL_SIZE] = tag_fixnum(sizeof(cell));
|
special_objects[OBJ_CELL_SIZE] = tag_fixnum(sizeof(cell));
|
||||||
special_objects[OBJ_EXECUTABLE] =
|
|
||||||
allot_alien(false_object, (cell)p->executable_path);
|
|
||||||
special_objects[OBJ_ARGS] = false_object;
|
special_objects[OBJ_ARGS] = false_object;
|
||||||
special_objects[OBJ_EMBEDDED] = false_object;
|
special_objects[OBJ_EMBEDDED] = false_object;
|
||||||
special_objects[OBJ_VM_COMPILER] =
|
|
||||||
allot_alien(false_object, (cell)FACTOR_COMPILER_VERSION);
|
cell aliens[][2] = {
|
||||||
special_objects[OBJ_VM_COMPILE_TIME] =
|
{OBJ_CPU, (cell)FACTOR_CPU_STRING},
|
||||||
allot_alien(false_object, (cell)FACTOR_COMPILE_TIME);
|
{OBJ_EXECUTABLE, (cell)p->executable_path},
|
||||||
special_objects[OBJ_VM_VERSION] =
|
{OBJ_OS, (cell)FACTOR_OS_STRING},
|
||||||
allot_alien(false_object, (cell)FACTOR_STRINGIZE(FACTOR_VERSION));
|
{OBJ_VM_COMPILE_TIME, (cell)FACTOR_COMPILE_TIME},
|
||||||
special_objects[OBJ_VM_GIT_LABEL] =
|
{OBJ_VM_COMPILER, (cell)FACTOR_COMPILER_VERSION},
|
||||||
allot_alien(false_object, (cell)FACTOR_STRINGIZE(FACTOR_GIT_LABEL));
|
{OBJ_VM_GIT_LABEL, (cell)FACTOR_STRINGIZE(FACTOR_GIT_LABEL)},
|
||||||
|
{OBJ_VM_VERSION, (cell)FACTOR_STRINGIZE(FACTOR_VERSION)}
|
||||||
|
};
|
||||||
|
int n_items = sizeof(aliens) / sizeof(cell[2]);
|
||||||
|
for (int n = 0; n < n_items; n++) {
|
||||||
|
cell idx = aliens[n][0];
|
||||||
|
special_objects[idx] = allot_alien(false_object, aliens[n][1]);
|
||||||
|
}
|
||||||
|
|
||||||
/* We can GC now */
|
/* We can GC now */
|
||||||
gc_off = false;
|
gc_off = false;
|
||||||
|
|
Loading…
Reference in New Issue