| 
									
										
										
										
											2009-05-04 02:46:13 -04:00
										 |  |  | namespace factor | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-25 22:17:20 -04:00
										 |  |  | inline cell align_page(cell a) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	return align(a,getpagesize()); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* segments set up guard pages to check for under/overflow.
 | 
					
						
							|  |  |  | size must be a multiple of the page size */ | 
					
						
							| 
									
										
										
										
											2009-05-04 05:50:24 -04:00
										 |  |  | struct segment { | 
					
						
							|  |  |  | 	cell start; | 
					
						
							|  |  |  | 	cell size; | 
					
						
							|  |  |  | 	cell end; | 
					
						
							| 
									
										
										
										
											2009-09-25 22:17:20 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-16 05:37:27 -04:00
										 |  |  | 	explicit segment(cell size, bool executable_p); | 
					
						
							| 
									
										
										
										
											2009-09-25 22:17:20 -04:00
										 |  |  | 	~segment(); | 
					
						
							| 
									
										
										
										
											2010-03-27 07:33:28 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	bool underflow_p(cell addr) | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		return (addr >= start - getpagesize() && addr < start); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	bool overflow_p(cell addr) | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		return (addr >= end && addr < end + getpagesize()); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2009-05-04 02:00:30 -04:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2009-05-04 02:46:13 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | } |