| 
									
										
										
										
											2009-05-02 05:04:19 -04:00
										 |  |  | #include "master.hpp"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-11 22:27:19 -04:00
										 |  |  | namespace factor { | 
					
						
							| 
									
										
										
										
											2009-05-04 02:46:13 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-13 00:53:47 -04:00
										 |  |  | void factor_vm::primitive_exit() { exit((int)to_fixnum(ctx->pop())); } | 
					
						
							| 
									
										
										
										
											2009-05-02 05:04:19 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-11 22:27:19 -04:00
										 |  |  | void exit(int status) { | 
					
						
							| 
									
										
										
										
											2015-08-03 17:06:02 -04:00
										 |  |  |   close_console(); | 
					
						
							| 
									
										
										
										
											2013-05-11 22:27:19 -04:00
										 |  |  |   ::exit(status); | 
					
						
							| 
									
										
										
										
											2011-11-12 17:47:32 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-11 22:27:19 -04:00
										 |  |  | void factor_vm::primitive_nano_count() { | 
					
						
							| 
									
										
										
										
											2013-05-13 00:28:25 -04:00
										 |  |  |   uint64_t nanos = nano_count(); | 
					
						
							| 
									
										
										
										
											2013-05-11 22:27:19 -04:00
										 |  |  |   if (nanos < last_nano_count) { | 
					
						
							|  |  |  |     std::cout << "Monotonic counter decreased from 0x"; | 
					
						
							|  |  |  |     std::cout << std::hex << last_nano_count; | 
					
						
							|  |  |  |     std::cout << " to 0x" << nanos << "." << std::dec << "\n"; | 
					
						
							|  |  |  |     std::cout << "Please report this error.\n"; | 
					
						
							|  |  |  |     current_vm()->factorbug(); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   last_nano_count = nanos; | 
					
						
							|  |  |  |   ctx->push(from_unsigned_8(nanos)); | 
					
						
							| 
									
										
										
										
											2009-11-18 05:20:05 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-11 22:27:19 -04:00
										 |  |  | void factor_vm::primitive_sleep() { sleep_nanos(to_unsigned_8(ctx->pop())); } | 
					
						
							| 
									
										
										
										
											2009-05-02 05:04:19 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-04 02:46:13 -04:00
										 |  |  | } |