52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
namespace factor
 | 
						|
{
 | 
						|
 | 
						|
/* Runtime errors */
 | 
						|
enum vm_error_type
 | 
						|
{
 | 
						|
	ERROR_EXPIRED = 0,
 | 
						|
	ERROR_IO,
 | 
						|
	ERROR_NOT_IMPLEMENTED,
 | 
						|
	ERROR_TYPE,
 | 
						|
	ERROR_DIVIDE_BY_ZERO,
 | 
						|
	ERROR_SIGNAL,
 | 
						|
	ERROR_ARRAY_SIZE,
 | 
						|
	ERROR_C_STRING,
 | 
						|
	ERROR_FFI,
 | 
						|
	ERROR_HEAP_SCAN,
 | 
						|
	ERROR_UNDEFINED_SYMBOL,
 | 
						|
	ERROR_DS_UNDERFLOW,
 | 
						|
	ERROR_DS_OVERFLOW,
 | 
						|
	ERROR_RS_UNDERFLOW,
 | 
						|
	ERROR_RS_OVERFLOW,
 | 
						|
	ERROR_MEMORY,
 | 
						|
};
 | 
						|
 | 
						|
void out_of_memory();
 | 
						|
void fatal_error(const char* msg, cell tagged);
 | 
						|
void critical_error(const char* msg, cell tagged);
 | 
						|
 | 
						|
PRIMITIVE(die);
 | 
						|
 | 
						|
void throw_error(cell error, stack_frame *native_stack);
 | 
						|
void general_error(vm_error_type error, cell arg1, cell arg2, stack_frame *native_stack);
 | 
						|
void divide_by_zero_error();
 | 
						|
void memory_protection_error(cell addr, stack_frame *native_stack);
 | 
						|
void signal_error(int signal, stack_frame *native_stack);
 | 
						|
void type_error(cell type, cell tagged);
 | 
						|
void not_implemented_error();
 | 
						|
 | 
						|
PRIMITIVE(call_clear);
 | 
						|
PRIMITIVE(unimplemented);
 | 
						|
 | 
						|
/* Global variables used to pass fault handler state from signal handler to
 | 
						|
user-space */
 | 
						|
extern cell signal_number;
 | 
						|
extern cell signal_fault_addr;
 | 
						|
extern stack_frame *signal_callstack_top;
 | 
						|
 | 
						|
void memory_signal_handler_impl();
 | 
						|
void misc_signal_handler_impl();
 | 
						|
 | 
						|
}
 |