vm: fatal_error if VM-less thread gets a signal
parent
41c36752fc
commit
3726f61c70
|
@ -142,9 +142,7 @@ void factor_vm::synchronous_signal_handler_impl()
|
||||||
|
|
||||||
void synchronous_signal_handler_impl()
|
void synchronous_signal_handler_impl()
|
||||||
{
|
{
|
||||||
factor_vm *vm = current_vm_p();
|
current_vm()->synchronous_signal_handler_impl();
|
||||||
if (vm)
|
|
||||||
vm->synchronous_signal_handler_impl();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void factor_vm::fp_signal_handler_impl()
|
void factor_vm::fp_signal_handler_impl()
|
||||||
|
|
|
@ -153,9 +153,13 @@ void memory_signal_handler(int signal, siginfo_t *siginfo, void *uap)
|
||||||
|
|
||||||
void synchronous_signal_handler(int signal, siginfo_t *siginfo, void *uap)
|
void synchronous_signal_handler(int signal, siginfo_t *siginfo, void *uap)
|
||||||
{
|
{
|
||||||
factor_vm *vm = current_vm();
|
factor_vm *vm = current_vm_p();
|
||||||
vm->signal_number = signal;
|
if (vm)
|
||||||
vm->dispatch_signal(uap,factor::synchronous_signal_handler_impl);
|
{
|
||||||
|
vm->signal_number = signal;
|
||||||
|
vm->dispatch_signal(uap,factor::synchronous_signal_handler_impl);
|
||||||
|
} else
|
||||||
|
fatal_error("Foreign thread received signal ", signal);
|
||||||
}
|
}
|
||||||
|
|
||||||
void next_safepoint_signal_handler(int signal, siginfo_t *siginfo, void *uap)
|
void next_safepoint_signal_handler(int signal, siginfo_t *siginfo, void *uap)
|
||||||
|
@ -163,6 +167,8 @@ void next_safepoint_signal_handler(int signal, siginfo_t *siginfo, void *uap)
|
||||||
factor_vm *vm = current_vm_p();
|
factor_vm *vm = current_vm_p();
|
||||||
if (vm)
|
if (vm)
|
||||||
vm->enqueue_safepoint_signal(signal);
|
vm->enqueue_safepoint_signal(signal);
|
||||||
|
else
|
||||||
|
fatal_error("Foreign thread received signal ", signal);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ignore_signal_handler(int signal, siginfo_t *siginfo, void *uap)
|
void ignore_signal_handler(int signal, siginfo_t *siginfo, void *uap)
|
||||||
|
|
|
@ -211,7 +211,7 @@ struct factor_vm
|
||||||
bignum * * quotient, bignum * * remainder, int q_negative_p, int r_negative_p);
|
bignum * * quotient, bignum * * remainder, int q_negative_p, int r_negative_p);
|
||||||
void bignum_divide_unsigned_normalized(bignum * u, bignum * v, bignum * q);
|
void bignum_divide_unsigned_normalized(bignum * u, bignum * v, bignum * q);
|
||||||
bignum_digit_type bignum_divide_subtract(bignum_digit_type * v_start, bignum_digit_type * v_end,
|
bignum_digit_type bignum_divide_subtract(bignum_digit_type * v_start, bignum_digit_type * v_end,
|
||||||
bignum_digit_type guess, bignum_digit_type * u_start);
|
bignum_digit_type guess, bignum_digit_type * u_start);
|
||||||
void bignum_divide_unsigned_medium_denominator(bignum * numerator,bignum_digit_type denominator,
|
void bignum_divide_unsigned_medium_denominator(bignum * numerator,bignum_digit_type denominator,
|
||||||
bignum * * quotient, bignum * * remainder,int q_negative_p, int r_negative_p);
|
bignum * * quotient, bignum * * remainder,int q_negative_p, int r_negative_p);
|
||||||
void bignum_destructive_normalization(bignum * source, bignum * target, int shift_left);
|
void bignum_destructive_normalization(bignum * source, bignum * target, int shift_left);
|
||||||
|
|
Loading…
Reference in New Issue