| 
									
										
										
										
											2013-05-11 22:30:45 -04:00
										 |  |  | namespace factor { | 
					
						
							| 
									
										
										
										
											2009-10-31 03:30:48 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-13 00:28:25 -04:00
										 |  |  | inline static void memset_2(void* dst, uint16_t pattern, size_t size) { | 
					
						
							| 
									
										
										
										
											2010-04-25 20:19:50 -04:00
										 |  |  | #ifdef __APPLE__
 | 
					
						
							| 
									
										
										
										
											2013-05-11 22:30:45 -04:00
										 |  |  |   cell cell_pattern = (pattern | (pattern << 16)); | 
					
						
							|  |  |  |   memset_pattern4(dst, &cell_pattern, size); | 
					
						
							| 
									
										
										
										
											2010-04-25 20:19:50 -04:00
										 |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2013-05-11 22:30:45 -04:00
										 |  |  |   if (pattern == 0) | 
					
						
							|  |  |  |     memset(dst, 0, size); | 
					
						
							|  |  |  |   else { | 
					
						
							| 
									
										
										
										
											2013-05-13 00:28:25 -04:00
										 |  |  |     uint16_t* start = (uint16_t*)dst; | 
					
						
							| 
									
										
										
										
											2013-05-13 00:53:47 -04:00
										 |  |  |     uint16_t* end = (uint16_t*)((cell)dst + size); | 
					
						
							| 
									
										
										
										
											2013-05-11 22:30:45 -04:00
										 |  |  |     while (start < end) { | 
					
						
							|  |  |  |       *start = pattern; | 
					
						
							|  |  |  |       start++; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2010-04-25 20:19:50 -04:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-11 22:30:45 -04:00
										 |  |  | inline static void memset_cell(void* dst, cell pattern, size_t size) { | 
					
						
							| 
									
										
										
										
											2009-10-31 03:30:48 -04:00
										 |  |  | #ifdef __APPLE__
 | 
					
						
							| 
									
										
										
										
											2013-05-11 22:30:45 -04:00
										 |  |  | #ifdef FACTOR_64
 | 
					
						
							|  |  |  |   memset_pattern8(dst, &pattern, size); | 
					
						
							| 
									
										
										
										
											2009-10-31 03:30:48 -04:00
										 |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2013-05-11 22:30:45 -04:00
										 |  |  |   memset_pattern4(dst, &pattern, size); | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  |   if (pattern == 0) | 
					
						
							|  |  |  |     memset(dst, 0, size); | 
					
						
							|  |  |  |   else { | 
					
						
							|  |  |  |     cell* start = (cell*)dst; | 
					
						
							| 
									
										
										
										
											2013-05-13 00:53:47 -04:00
										 |  |  |     cell* end = (cell*)((cell)dst + size); | 
					
						
							| 
									
										
										
										
											2013-05-11 22:30:45 -04:00
										 |  |  |     while (start < end) { | 
					
						
							|  |  |  |       *start = pattern; | 
					
						
							|  |  |  |       start++; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2009-10-31 03:30:48 -04:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-11 22:30:45 -04:00
										 |  |  | void* fill_function_descriptor(void* ptr, void* code); | 
					
						
							|  |  |  | void* function_descriptor_field(void* ptr, size_t idx); | 
					
						
							| 
									
										
										
										
											2011-05-20 18:11:50 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-11 22:30:45 -04:00
										 |  |  | vm_char* safe_strdup(const vm_char* str); | 
					
						
							| 
									
										
										
										
											2009-10-31 03:30:48 -04:00
										 |  |  | cell read_cell_hex(); | 
					
						
							| 
									
										
										
										
											2013-05-11 22:30:45 -04:00
										 |  |  | VM_C_API void* factor_memcpy(void* dst, void* src, size_t len); | 
					
						
							| 
									
										
										
										
											2009-10-31 03:30:48 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-04 02:46:13 -04:00
										 |  |  | } |