vm: clean up TLS usage
parent
fa08afdde8
commit
69bb81dab8
|
@ -149,7 +149,7 @@ void factor_vm::undefined_symbol()
|
|||
|
||||
void undefined_symbol()
|
||||
{
|
||||
return tls_vm()->undefined_symbol();
|
||||
return current_vm()->undefined_symbol();
|
||||
}
|
||||
|
||||
/* Look up an external library symbol referenced by a compiled code block */
|
||||
|
|
|
@ -17,13 +17,13 @@ void critical_error(const char *msg, cell tagged)
|
|||
std::cout << "critical_error: " << msg;
|
||||
std::cout << ": " << std::hex << tagged << std::dec;
|
||||
std::cout << std::endl;
|
||||
tls_vm()->factorbug();
|
||||
current_vm()->factorbug();
|
||||
}
|
||||
|
||||
void out_of_memory()
|
||||
{
|
||||
std::cout << "Out of memory\n\n";
|
||||
tls_vm()->dump_generations();
|
||||
current_vm()->dump_generations();
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
@ -146,7 +146,7 @@ void factor_vm::memory_signal_handler_impl()
|
|||
|
||||
void memory_signal_handler_impl()
|
||||
{
|
||||
tls_vm()->memory_signal_handler_impl();
|
||||
current_vm()->memory_signal_handler_impl();
|
||||
}
|
||||
|
||||
void factor_vm::misc_signal_handler_impl()
|
||||
|
@ -156,7 +156,7 @@ void factor_vm::misc_signal_handler_impl()
|
|||
|
||||
void misc_signal_handler_impl()
|
||||
{
|
||||
tls_vm()->misc_signal_handler_impl();
|
||||
current_vm()->misc_signal_handler_impl();
|
||||
}
|
||||
|
||||
void factor_vm::fp_signal_handler_impl()
|
||||
|
@ -166,7 +166,7 @@ void factor_vm::fp_signal_handler_impl()
|
|||
|
||||
void fp_signal_handler_impl()
|
||||
{
|
||||
tls_vm()->fp_signal_handler_impl();
|
||||
current_vm()->fp_signal_handler_impl();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ void flush_icache(cell start, cell len)
|
|||
: "r0","r1","r2");
|
||||
|
||||
if(result < 0)
|
||||
tls_vm()critical_error("flush_icache() failed",result);
|
||||
critical_error("flush_icache() failed",result);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -17,23 +17,23 @@ THREADHANDLE start_thread(void *(*start_routine)(void *),void *args)
|
|||
return thread;
|
||||
}
|
||||
|
||||
pthread_key_t tlsKey = 0;
|
||||
pthread_key_t current_vm_tls_key = 0;
|
||||
|
||||
void init_platform_globals()
|
||||
{
|
||||
if (pthread_key_create(&tlsKey, NULL) != 0)
|
||||
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(tlsKey,vm);
|
||||
pthread_setspecific(current_vm_tls_key,vm);
|
||||
}
|
||||
|
||||
factor_vm *tls_vm()
|
||||
factor_vm *current_vm()
|
||||
{
|
||||
factor_vm *vm = (factor_vm*)pthread_getspecific(tlsKey);
|
||||
factor_vm *vm = (factor_vm*)pthread_getspecific(current_vm_tls_key);
|
||||
assert(vm != NULL);
|
||||
return vm;
|
||||
}
|
||||
|
@ -156,21 +156,21 @@ void factor_vm::dispatch_signal(void *uap, void (handler)())
|
|||
|
||||
void memory_signal_handler(int signal, siginfo_t *siginfo, void *uap)
|
||||
{
|
||||
factor_vm *vm = tls_vm();
|
||||
factor_vm *vm = current_vm();
|
||||
vm->signal_fault_addr = (cell)siginfo->si_addr;
|
||||
vm->dispatch_signal(uap,factor::memory_signal_handler_impl);
|
||||
}
|
||||
|
||||
void misc_signal_handler(int signal, siginfo_t *siginfo, void *uap)
|
||||
{
|
||||
factor_vm *vm = tls_vm();
|
||||
factor_vm *vm = current_vm();
|
||||
vm->signal_number = signal;
|
||||
vm->dispatch_signal(uap,factor::misc_signal_handler_impl);
|
||||
}
|
||||
|
||||
void fpe_signal_handler(int signal, siginfo_t *siginfo, void *uap)
|
||||
{
|
||||
factor_vm *vm = tls_vm();
|
||||
factor_vm *vm = current_vm();
|
||||
vm->signal_number = signal;
|
||||
vm->signal_fpu_status = fpu_status(uap_fpu_status(uap));
|
||||
uap_clear_fpu_status(uap);
|
||||
|
|
|
@ -50,7 +50,7 @@ void sleep_nanos(u64 nsec);
|
|||
void init_platform_globals();
|
||||
|
||||
void register_vm_with_thread(factor_vm *vm);
|
||||
factor_vm *tls_vm();
|
||||
factor_vm *current_vm();
|
||||
void open_console();
|
||||
|
||||
void move_file(const vm_char *path1, const vm_char *path2);
|
||||
|
|
|
@ -22,9 +22,9 @@ void register_vm_with_thread(factor_vm *vm)
|
|||
fatal_error("TlsSetValue failed",0);
|
||||
}
|
||||
|
||||
factor_vm *tls_vm()
|
||||
factor_vm *current_vm()
|
||||
{
|
||||
factor_vm *vm = (factor_vm*)TlsGetValue(dwTlsIndex);
|
||||
factor_vm *vm = (factor_vm *)TlsGetValue(dwTlsIndex);
|
||||
assert(vm != NULL);
|
||||
return vm;
|
||||
}
|
||||
|
@ -122,7 +122,7 @@ LONG factor_vm::exception_handler(PEXCEPTION_POINTERS pe)
|
|||
|
||||
FACTOR_STDCALL(LONG) exception_handler(PEXCEPTION_POINTERS pe)
|
||||
{
|
||||
return tls_vm()->exception_handler(pe);
|
||||
return current_vm()->exception_handler(pe);
|
||||
}
|
||||
|
||||
void factor_vm::c_to_factor_toplevel(cell quot)
|
||||
|
|
|
@ -47,6 +47,6 @@ inline static THREADHANDLE thread_id() { return GetCurrentThread(); }
|
|||
|
||||
void init_platform_globals();
|
||||
void register_vm_with_thread(factor_vm *vm);
|
||||
factor_vm *tls_vm();
|
||||
factor_vm *current_vm();
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue