VM: Refactor mvm* to Factor style
parent
d9e225e1dc
commit
d57c1cc579
|
@ -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; }
|
||||
|
||||
}
|
||||
|
|
|
@ -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(¤t_vm_tls_key, NULL) != 0)
|
||||
fatal_error("pthread_key_create() failed",0);
|
||||
void init_mvm() {
|
||||
if (pthread_key_create(¤t_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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
34
vm/mvm.cpp
34
vm/mvm.cpp
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
21
vm/mvm.hpp
21
vm/mvm.hpp
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue