VM: Refactor mvm* to Factor style

db4
Erik Charlebois 2013-05-11 22:14:17 -04:00
parent d9e225e1dc
commit d57c1cc579
5 changed files with 53 additions and 70 deletions

View File

@ -1,24 +1,16 @@
#include "master.hpp"
namespace factor
{
namespace factor {
factor_vm *global_vm;
factor_vm* global_vm;
void init_mvm()
{
global_vm = NULL;
void init_mvm() { global_vm = NULL; }
void register_vm_with_thread(factor_vm* vm) {
FACTOR_ASSERT(!global_vm);
global_vm = vm;
}
void register_vm_with_thread(factor_vm *vm)
{
FACTOR_ASSERT(!global_vm);
global_vm = vm;
}
factor_vm *current_vm_p()
{
return global_vm;
}
factor_vm* current_vm_p() { return global_vm; }
}

View File

@ -1,24 +1,20 @@
#include "master.hpp"
namespace factor
{
namespace factor {
pthread_key_t current_vm_tls_key;
void init_mvm()
{
if(pthread_key_create(&current_vm_tls_key, NULL) != 0)
fatal_error("pthread_key_create() failed",0);
void init_mvm() {
if (pthread_key_create(&current_vm_tls_key, NULL) != 0)
fatal_error("pthread_key_create() failed", 0);
}
void register_vm_with_thread(factor_vm *vm)
{
pthread_setspecific(current_vm_tls_key,vm);
void register_vm_with_thread(factor_vm* vm) {
pthread_setspecific(current_vm_tls_key, vm);
}
factor_vm *current_vm_p()
{
return (factor_vm*)pthread_getspecific(current_vm_tls_key);
factor_vm* current_vm_p() {
return (factor_vm*)pthread_getspecific(current_vm_tls_key);
}
}

View File

@ -1,25 +1,21 @@
#include "master.hpp"
namespace factor
{
namespace factor {
DWORD current_vm_tls_key;
DWORD current_vm_tls_key;
void init_mvm()
{
if((current_vm_tls_key = TlsAlloc()) == TLS_OUT_OF_INDEXES)
fatal_error("TlsAlloc() failed",0);
void init_mvm() {
if ((current_vm_tls_key = TlsAlloc()) == TLS_OUT_OF_INDEXES)
fatal_error("TlsAlloc() failed", 0);
}
void register_vm_with_thread(factor_vm *vm)
{
if(!TlsSetValue(current_vm_tls_key, vm))
fatal_error("TlsSetValue() failed",0);
void register_vm_with_thread(factor_vm* vm) {
if (!TlsSetValue(current_vm_tls_key, vm))
fatal_error("TlsSetValue() failed", 0);
}
factor_vm *current_vm_p()
{
return (factor_vm *)TlsGetValue(current_vm_tls_key);
factor_vm* current_vm_p() {
return (factor_vm*)TlsGetValue(current_vm_tls_key);
}
}

View File

@ -1,31 +1,31 @@
#include "master.hpp"
namespace factor
{
namespace factor {
std::map<THREADHANDLE, factor_vm*> thread_vms;
struct startargs {
int argc;
vm_char **argv;
int argc;
vm_char** argv;
};
// arg must be new'ed because we're going to delete it!
void *start_standalone_factor_thread(void *arg)
{
factor_vm *newvm = new_factor_vm();
startargs *args = (startargs*) arg;
int argc = args->argc; vm_char **argv = args->argv;
delete args;
newvm->start_standalone_factor(argc, argv);
return 0;
void* start_standalone_factor_thread(void* arg) {
factor_vm* newvm = new_factor_vm();
startargs* args = (startargs*)arg;
int argc = args->argc;
vm_char** argv = args->argv;
delete args;
newvm->start_standalone_factor(argc, argv);
return 0;
}
VM_C_API THREADHANDLE start_standalone_factor_in_new_thread(int argc, vm_char **argv)
{
startargs *args = new startargs;
args->argc = argc; args->argv = argv;
return start_thread(start_standalone_factor_thread,args);
VM_C_API THREADHANDLE start_standalone_factor_in_new_thread(int argc,
vm_char** argv) {
startargs* args = new startargs;
args->argc = argc;
args->argv = argv;
return start_thread(start_standalone_factor_thread, args);
}
}

View File

@ -1,19 +1,18 @@
namespace factor
{
namespace factor {
void init_mvm();
void register_vm_with_thread(factor_vm *vm);
factor_vm *current_vm_p();
void register_vm_with_thread(factor_vm* vm);
factor_vm* current_vm_p();
inline factor_vm *current_vm()
{
factor_vm *vm = current_vm_p();
FACTOR_ASSERT(vm != NULL);
return vm;
inline factor_vm* current_vm() {
factor_vm* vm = current_vm_p();
FACTOR_ASSERT(vm != NULL);
return vm;
}
VM_C_API THREADHANDLE start_standalone_factor_in_new_thread(int argc, vm_char **argv);
VM_C_API THREADHANDLE start_standalone_factor_in_new_thread(int argc,
vm_char** argv);
extern std::map<THREADHANDLE, factor_vm *> thread_vms;
extern std::map<THREADHANDLE, factor_vm*> thread_vms;
}