vm: clean up TLS usage

release
Slava Pestov 2010-03-27 03:44:40 -04:00
parent fa08afdde8
commit 69bb81dab8
7 changed files with 20 additions and 20 deletions

View File

@ -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 */

View File

@ -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();
}
}

View File

@ -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);
}
}

View File

@ -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(&current_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);

View File

@ -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);

View File

@ -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)

View File

@ -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();
}