VM: Refactor mvm* to Factor style
parent
d9e225e1dc
commit
d57c1cc579
|
@ -1,24 +1,16 @@
|
||||||
#include "master.hpp"
|
#include "master.hpp"
|
||||||
|
|
||||||
namespace factor
|
namespace factor {
|
||||||
{
|
|
||||||
|
|
||||||
factor_vm* global_vm;
|
factor_vm* global_vm;
|
||||||
|
|
||||||
void init_mvm()
|
void init_mvm() { global_vm = NULL; }
|
||||||
{
|
|
||||||
global_vm = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void register_vm_with_thread(factor_vm *vm)
|
void register_vm_with_thread(factor_vm* vm) {
|
||||||
{
|
|
||||||
FACTOR_ASSERT(!global_vm);
|
FACTOR_ASSERT(!global_vm);
|
||||||
global_vm = vm;
|
global_vm = vm;
|
||||||
}
|
}
|
||||||
|
|
||||||
factor_vm *current_vm_p()
|
factor_vm* current_vm_p() { return global_vm; }
|
||||||
{
|
|
||||||
return global_vm;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,23 +1,19 @@
|
||||||
#include "master.hpp"
|
#include "master.hpp"
|
||||||
|
|
||||||
namespace factor
|
namespace factor {
|
||||||
{
|
|
||||||
|
|
||||||
pthread_key_t current_vm_tls_key;
|
pthread_key_t current_vm_tls_key;
|
||||||
|
|
||||||
void init_mvm()
|
void init_mvm() {
|
||||||
{
|
|
||||||
if (pthread_key_create(¤t_vm_tls_key, NULL) != 0)
|
if (pthread_key_create(¤t_vm_tls_key, NULL) != 0)
|
||||||
fatal_error("pthread_key_create() failed", 0);
|
fatal_error("pthread_key_create() failed", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void register_vm_with_thread(factor_vm *vm)
|
void register_vm_with_thread(factor_vm* vm) {
|
||||||
{
|
|
||||||
pthread_setspecific(current_vm_tls_key, vm);
|
pthread_setspecific(current_vm_tls_key, vm);
|
||||||
}
|
}
|
||||||
|
|
||||||
factor_vm *current_vm_p()
|
factor_vm* current_vm_p() {
|
||||||
{
|
|
||||||
return (factor_vm*)pthread_getspecific(current_vm_tls_key);
|
return (factor_vm*)pthread_getspecific(current_vm_tls_key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,24 +1,20 @@
|
||||||
#include "master.hpp"
|
#include "master.hpp"
|
||||||
|
|
||||||
namespace factor
|
namespace factor {
|
||||||
{
|
|
||||||
|
|
||||||
DWORD current_vm_tls_key;
|
DWORD current_vm_tls_key;
|
||||||
|
|
||||||
void init_mvm()
|
void init_mvm() {
|
||||||
{
|
|
||||||
if ((current_vm_tls_key = TlsAlloc()) == TLS_OUT_OF_INDEXES)
|
if ((current_vm_tls_key = TlsAlloc()) == TLS_OUT_OF_INDEXES)
|
||||||
fatal_error("TlsAlloc() failed", 0);
|
fatal_error("TlsAlloc() failed", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void register_vm_with_thread(factor_vm *vm)
|
void register_vm_with_thread(factor_vm* vm) {
|
||||||
{
|
|
||||||
if (!TlsSetValue(current_vm_tls_key, vm))
|
if (!TlsSetValue(current_vm_tls_key, vm))
|
||||||
fatal_error("TlsSetValue() failed", 0);
|
fatal_error("TlsSetValue() failed", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
factor_vm *current_vm_p()
|
factor_vm* current_vm_p() {
|
||||||
{
|
|
||||||
return (factor_vm*)TlsGetValue(current_vm_tls_key);
|
return (factor_vm*)TlsGetValue(current_vm_tls_key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
16
vm/mvm.cpp
16
vm/mvm.cpp
|
@ -1,7 +1,6 @@
|
||||||
#include "master.hpp"
|
#include "master.hpp"
|
||||||
|
|
||||||
namespace factor
|
namespace factor {
|
||||||
{
|
|
||||||
|
|
||||||
std::map<THREADHANDLE, factor_vm*> thread_vms;
|
std::map<THREADHANDLE, factor_vm*> thread_vms;
|
||||||
|
|
||||||
|
@ -11,20 +10,21 @@ struct startargs {
|
||||||
};
|
};
|
||||||
|
|
||||||
// arg must be new'ed because we're going to delete it!
|
// arg must be new'ed because we're going to delete it!
|
||||||
void *start_standalone_factor_thread(void *arg)
|
void* start_standalone_factor_thread(void* arg) {
|
||||||
{
|
|
||||||
factor_vm* newvm = new_factor_vm();
|
factor_vm* newvm = new_factor_vm();
|
||||||
startargs* args = (startargs*)arg;
|
startargs* args = (startargs*)arg;
|
||||||
int argc = args->argc; vm_char **argv = args->argv;
|
int argc = args->argc;
|
||||||
|
vm_char** argv = args->argv;
|
||||||
delete args;
|
delete args;
|
||||||
newvm->start_standalone_factor(argc, argv);
|
newvm->start_standalone_factor(argc, argv);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
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) {
|
||||||
startargs* args = new startargs;
|
startargs* args = new startargs;
|
||||||
args->argc = argc; args->argv = argv;
|
args->argc = argc;
|
||||||
|
args->argv = argv;
|
||||||
return start_thread(start_standalone_factor_thread, args);
|
return start_thread(start_standalone_factor_thread, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,18 +1,17 @@
|
||||||
namespace factor
|
namespace factor {
|
||||||
{
|
|
||||||
|
|
||||||
void init_mvm();
|
void init_mvm();
|
||||||
void register_vm_with_thread(factor_vm* vm);
|
void register_vm_with_thread(factor_vm* vm);
|
||||||
factor_vm* current_vm_p();
|
factor_vm* current_vm_p();
|
||||||
|
|
||||||
inline factor_vm *current_vm()
|
inline factor_vm* current_vm() {
|
||||||
{
|
|
||||||
factor_vm* vm = current_vm_p();
|
factor_vm* vm = current_vm_p();
|
||||||
FACTOR_ASSERT(vm != NULL);
|
FACTOR_ASSERT(vm != NULL);
|
||||||
return vm;
|
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