14 ERROR_UNDEFINED_SYMBOL,
22 void out_of_memory(void);
23 void fatal_error(char* msg, CELL tagged);
24 void critical_error(char* msg, CELL tagged);
25 void primitive_die(void);
27 void throw_error(CELL error, F_STACK_FRAME *native_stack);
28 void general_error(F_ERRORTYPE error, CELL arg1, CELL arg2, F_STACK_FRAME *native_stack);
29 void divide_by_zero_error(F_STACK_FRAME *native_stack);
30 void memory_protection_error(CELL addr, F_STACK_FRAME *native_stack);
31 void signal_error(int signal, F_STACK_FRAME *native_stack);
32 void type_error(CELL type, CELL tagged);
33 void not_implemented_error(void);
35 void primitive_call_clear(void);
37 INLINE void type_check(CELL type, CELL tagged)
39 if(type_of(tagged) != type) type_error(type,tagged);
42 #define DEFINE_UNTAG(type,check,name) \
43 INLINE type *untag_##name(CELL obj) \
45 type_check(check,obj); \
46 return untag_object(obj); \
49 /* Global variables used to pass fault handler state from signal handler to
52 CELL signal_fault_addr;
53 void *signal_callstack_top;
55 void memory_signal_handler_impl(void);
56 void divide_by_zero_signal_handler_impl(void);
57 void misc_signal_handler_impl(void);
59 void primitive_unimplemented(void);