| 
									
										
										
										
											2009-05-02 05:04:19 -04:00
										 |  |  | #include "master.hpp"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-04 02:46:13 -04:00
										 |  |  | namespace factor | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-27 14:42:18 -04:00
										 |  |  | void factor_vm::primitive_exit() | 
					
						
							| 
									
										
										
										
											2009-05-02 05:04:19 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-01-24 08:17:18 -05:00
										 |  |  | 	exit((int)to_fixnum(ctx->pop())); | 
					
						
							| 
									
										
										
										
											2009-05-02 05:04:19 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-17 23:42:30 -05:00
										 |  |  | void exit(int status) | 
					
						
							| 
									
										
										
										
											2011-11-12 17:47:32 -05:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2011-11-17 23:42:30 -05:00
										 |  |  | 	factor_vm::close_console(); | 
					
						
							| 
									
										
										
										
											2011-11-12 17:47:32 -05:00
										 |  |  | 	::exit(status); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-18 16:58:48 -05:00
										 |  |  | void factor_vm::primitive_nano_count() | 
					
						
							| 
									
										
										
										
											2009-11-18 05:20:05 -05:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2009-12-14 02:09:04 -05:00
										 |  |  | 	u64 nanos = nano_count(); | 
					
						
							| 
									
										
										
										
											2010-08-02 20:50:34 -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(); | 
					
						
							| 
									
										
										
										
											2010-08-01 19:14:20 -04:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2009-12-14 02:09:04 -05:00
										 |  |  | 	last_nano_count = nanos; | 
					
						
							| 
									
										
										
										
											2009-12-18 16:59:56 -05:00
										 |  |  | 	ctx->push(from_unsigned_8(nanos)); | 
					
						
							| 
									
										
										
										
											2009-11-18 05:20:05 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-27 14:42:18 -04:00
										 |  |  | void factor_vm::primitive_sleep() | 
					
						
							| 
									
										
										
										
											2009-05-02 05:04:19 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2009-12-18 16:59:56 -05:00
										 |  |  | 	sleep_nanos(to_unsigned_8(ctx->pop())); | 
					
						
							| 
									
										
										
										
											2009-05-02 05:04:19 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-04 02:46:13 -04:00
										 |  |  | } |