From 28665b528742594834179ad88306963618a71cbd Mon Sep 17 00:00:00 2001 From: Phil Dawes Date: Mon, 24 Aug 2009 18:34:30 +0100 Subject: [PATCH] removed most global functions from factor.cpp --- vm/factor.cpp | 116 +++++++++++--------------------------------------- vm/factor.hpp | 10 ----- 2 files changed, 24 insertions(+), 102 deletions(-) diff --git a/vm/factor.cpp b/vm/factor.cpp index 883b4f9462..0c47e2329a 100755 --- a/vm/factor.cpp +++ b/vm/factor.cpp @@ -3,7 +3,7 @@ namespace factor { -factorvm *vm = new factorvm; +factorvm *vm; void factorvm::default_parameters(vm_parameters *p) { @@ -45,11 +45,6 @@ void factorvm::default_parameters(vm_parameters *p) p->stack_traces = true; } -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; @@ -62,11 +57,6 @@ bool factorvm::factor_arg(const vm_char* str, const vm_char* arg, cell* value) return false; } -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); @@ -92,11 +82,6 @@ void factorvm::init_parameters_from_args(vm_parameters *p, int argc, vm_char **a } } -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 */ void factorvm::do_stage1_init() { @@ -110,11 +95,6 @@ void factorvm::do_stage1_init() fflush(stdout); } -void do_stage1_init() -{ - return vm->do_stage1_init(); -} - void factorvm::init_factor(vm_parameters *p) { /* Kilobytes */ @@ -171,11 +151,6 @@ void factorvm::init_factor(vm_parameters *p) } } -VM_C_API void init_factor(vm_parameters *p) -{ - return vm->init_factor(p); -} - /* May allocate memory */ void factorvm::pass_args_to_factor(int argc, vm_char **argv) { @@ -189,11 +164,6 @@ void factorvm::pass_args_to_factor(int argc, vm_char **argv) userenv[ARGS_ENV] = args.elements.value(); } -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(); @@ -203,20 +173,28 @@ void factorvm::start_factor(vm_parameters *p) unnest_stacks(); } -void start_factor(vm_parameters *p) + +char *factorvm::factor_eval_string(char *string) { - return vm->start_factor(p); + char *(*callback)(char *) = (char *(*)(char *))alien_offset(userenv[EVAL_CALLBACK_ENV]); + return callback(string); } -void factorvm::start_embedded_factor(vm_parameters *p) +void factorvm::factor_eval_free(char *result) { - userenv[EMBEDDED_ENV] = T; - start_factor(p); + free(result); } -VM_C_API void start_embedded_factor(vm_parameters *p) +void factorvm::factor_yield() { - return vm->start_embedded_factor(p); + void (*callback)() = (void (*)())alien_offset(userenv[YIELD_CALLBACK_ENV]); + callback(); +} + +void factorvm::factor_sleep(long us) +{ + void (*callback)(long) = (void (*)(long))alien_offset(userenv[SLEEP_CALLBACK_ENV]); + callback(us); } void factorvm::start_standalone_factor(int argc, vm_char **argv) @@ -229,54 +207,6 @@ void factorvm::start_standalone_factor(int argc, vm_char **argv) start_factor(&p); } -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 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_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_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); -} - struct startargs { int argc; vm_char **argv; @@ -286,16 +216,18 @@ void* start_standalone_factor_thread(void *arg) { factorvm *newvm = new factorvm; startargs *args = (startargs*) arg; - vm_parameters p; - newvm->default_parameters(&p); - newvm->init_parameters_from_args(&p,args->argc, args->argv); - newvm->init_factor(&p); - newvm->pass_args_to_factor(args->argc,args->argv); - newvm->start_factor(&p); + newvm->start_standalone_factor(args->argc, args->argv); return 0; } +VM_C_API void start_standalone_factor(int argc, vm_char **argv) +{ + factorvm *newvm = new factorvm; + vm = newvm; + return newvm->start_standalone_factor(argc,argv); +} + VM_C_API void start_standalone_factor_in_new_thread(int argc, vm_char **argv) { startargs *args = new startargs; // leaks startargs structure diff --git a/vm/factor.hpp b/vm/factor.hpp index b2aeccd1a6..5c5b92dff2 100644 --- a/vm/factor.hpp +++ b/vm/factor.hpp @@ -1,17 +1,7 @@ namespace factor { -VM_C_API void default_parameters(vm_parameters *p); -VM_C_API void init_parameters_from_args(vm_parameters *p, int argc, vm_char **argv); -VM_C_API void init_factor(vm_parameters *p); -VM_C_API void pass_args_to_factor(int argc, vm_char **argv); -VM_C_API void start_embedded_factor(vm_parameters *p); VM_C_API void start_standalone_factor(int argc, vm_char **argv); VM_C_API void start_standalone_factor_in_new_thread(int argc, vm_char **argv); -VM_C_API char *factor_eval_string(char *string); -VM_C_API void factor_eval_free(char *result); -VM_C_API void factor_yield(); -VM_C_API void factor_sleep(long ms); - }