]> gitweb.factorcode.org Git - factor.git/commitdiff
moved factor.cpp functions to vm
authorPhil Dawes <phil@phildawes.net>
Mon, 17 Aug 2009 20:37:09 +0000 (21:37 +0100)
committerPhil Dawes <phil@phildawes.net>
Wed, 16 Sep 2009 07:16:21 +0000 (08:16 +0100)
vm/factor.cpp
vm/vm.hpp

index 5dd88402bc7575ce2f7442721ae9f4a287fd21b3..6a7180ccd70266a249263eeb04fc7bb6824e2f34 100755 (executable)
@@ -5,7 +5,7 @@ namespace factor
 
 factorvm *vm;
 
-VM_C_API void default_parameters(vm_parameters *p)
+void factorvm::default_parameters(vm_parameters *p)
 {
        p->image_path = NULL;
 
@@ -45,7 +45,12 @@ VM_C_API void default_parameters(vm_parameters *p)
        p->stack_traces = true;
 }
 
-static bool factor_arg(const vm_char* str, const vm_char* arg, cell* value)
+VM_C_API void default_parameters(vm_parameters *p)
+{
+       return vm->default_parameters(p);
+}
+
+bool factorvm::factor_arg(const vm_char* str, const vm_char* arg, cell* value)
 {
        int val;
        if(SSCANF(str,arg,&val) > 0)
@@ -57,7 +62,12 @@ static bool factor_arg(const vm_char* str, const vm_char* arg, cell* value)
                return false;
 }
 
-VM_C_API void init_parameters_from_args(vm_parameters *p, int argc, vm_char **argv)
+bool factor_arg(const vm_char* str, const vm_char* arg, cell* value)
+{
+       return vm->factor_arg(str,arg,value);
+}
+
+void factorvm::init_parameters_from_args(vm_parameters *p, int argc, vm_char **argv)
 {
        default_parameters(p);
        p->executable_path = argv[0];
@@ -82,8 +92,13 @@ VM_C_API void init_parameters_from_args(vm_parameters *p, int argc, vm_char **ar
        }
 }
 
+VM_C_API void init_parameters_from_args(vm_parameters *p, int argc, vm_char **argv)
+{
+       return vm->init_parameters_from_args(p,argc,argv);
+}
+
 /* Do some initialization that we do once only */
-static void do_stage1_init()
+void factorvm::do_stage1_init()
 {
        print_string("*** Stage 2 early init... ");
        fflush(stdout);
@@ -95,7 +110,12 @@ static void do_stage1_init()
        fflush(stdout);
 }
 
-VM_C_API void init_factor(vm_parameters *p)
+void do_stage1_init()
+{
+       return vm->do_stage1_init();
+}
+
+void factorvm::init_factor(vm_parameters *p)
 {
        vm = new factorvm;
        /* Kilobytes */
@@ -152,8 +172,13 @@ VM_C_API void init_factor(vm_parameters *p)
        }
 }
 
+VM_C_API void init_factor(vm_parameters *p)
+{
+       return vm->init_factor(p);
+}
+
 /* May allocate memory */
-VM_C_API void pass_args_to_factor(int argc, vm_char **argv)
+void factorvm::pass_args_to_factor(int argc, vm_char **argv)
 {
        growable_array args;
        int i;
@@ -165,7 +190,12 @@ VM_C_API void pass_args_to_factor(int argc, vm_char **argv)
        userenv[ARGS_ENV] = args.elements.value();
 }
 
-static void start_factor(vm_parameters *p)
+VM_C_API void pass_args_to_factor(int argc, vm_char **argv)
+{
+       return vm->pass_args_to_factor(argc,argv);
+}
+
+void factorvm::start_factor(vm_parameters *p)
 {
        if(p->fep) factorbug();
 
@@ -174,13 +204,23 @@ static void start_factor(vm_parameters *p)
        unnest_stacks();
 }
 
-VM_C_API void start_embedded_factor(vm_parameters *p)
+void start_factor(vm_parameters *p)
+{
+       return vm->start_factor(p);
+}
+
+void factorvm::start_embedded_factor(vm_parameters *p)
 {
        userenv[EMBEDDED_ENV] = T;
        start_factor(p);
 }
 
-VM_C_API void start_standalone_factor(int argc, vm_char **argv)
+VM_C_API void start_embedded_factor(vm_parameters *p)
+{
+       return vm->start_embedded_factor(p);
+}
+
+void factorvm::start_standalone_factor(int argc, vm_char **argv)
 {
        vm_parameters p;
        default_parameters(&p);
@@ -190,27 +230,52 @@ VM_C_API void start_standalone_factor(int argc, vm_char **argv)
        start_factor(&p);
 }
 
-VM_C_API char *factor_eval_string(char *string)
+VM_C_API void start_standalone_factor(int argc, vm_char **argv)
+{
+       return vm->start_standalone_factor(argc,argv);
+}
+
+char *factorvm::factor_eval_string(char *string)
 {
        char *(*callback)(char *) = (char *(*)(char *))alien_offset(userenv[EVAL_CALLBACK_ENV]);
        return callback(string);
 }
 
-VM_C_API void factor_eval_free(char *result)
+VM_C_API char *factor_eval_string(char *string)
+{
+       return vm->factor_eval_string(string);
+}
+
+void factorvm::factor_eval_free(char *result)
 {
        free(result);
 }
 
-VM_C_API void factor_yield()
+VM_C_API void factor_eval_free(char *result)
+{
+       return vm->factor_eval_free(result);
+}
+
+void factorvm::factor_yield()
 {
        void (*callback)() = (void (*)())alien_offset(userenv[YIELD_CALLBACK_ENV]);
        callback();
 }
 
-VM_C_API void factor_sleep(long us)
+VM_C_API void factor_yield()
+{
+       return vm->factor_yield();
+}
+
+void factorvm::factor_sleep(long us)
 {
        void (*callback)(long) = (void (*)(long))alien_offset(userenv[SLEEP_CALLBACK_ENV]);
        callback(us);
 }
 
+VM_C_API void factor_sleep(long us)
+{
+       return vm->factor_sleep(us);
+}
+
 }
index 7b23f07ba81ecaa402f039e62ead89f555697303..2c4cf211444a020687696acf1cf1e4c0959e581c 100644 (file)
--- a/vm/vm.hpp
+++ b/vm/vm.hpp
@@ -497,6 +497,21 @@ struct factorvm {
        void *inline_cache_miss(cell return_address);
        inline void vmprim_reset_inline_cache_stats();
        inline void vmprim_inline_cache_stats();
+
+       //factor
+       void default_parameters(vm_parameters *p);
+       bool factor_arg(const vm_char* str, const vm_char* arg, cell* value);
+       void init_parameters_from_args(vm_parameters *p, int argc, vm_char **argv);
+       void do_stage1_init();
+       void init_factor(vm_parameters *p);
+       void pass_args_to_factor(int argc, vm_char **argv);
+       void start_factor(vm_parameters *p);
+       void start_embedded_factor(vm_parameters *p);
+       void start_standalone_factor(int argc, vm_char **argv);
+       char *factor_eval_string(char *string);
+       void factor_eval_free(char *result);
+       void factor_yield();
+       void factor_sleep(long us);
        // next method here: