| 
									
										
										
										
											2009-05-04 02:46:13 -04:00
										 |  |  | namespace factor | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-10-31 03:30:48 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-25 20:19:50 -04:00
										 |  |  | inline static void memset_2(void *dst, u16 pattern, size_t size) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | #ifdef __APPLE__
 | 
					
						
							|  |  |  | 	cell cell_pattern = (pattern | (pattern << 16)); | 
					
						
							|  |  |  | 	memset_pattern4(dst,&cell_pattern,size); | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | 	if(pattern == 0) | 
					
						
							|  |  |  | 		memset(dst,0,size); | 
					
						
							|  |  |  | 	else | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		u16 *start = (u16 *)dst; | 
					
						
							|  |  |  | 		u16 *end = (u16 *)((cell)dst + size); | 
					
						
							|  |  |  | 		while(start < end) | 
					
						
							|  |  |  | 		{ | 
					
						
							|  |  |  | 			*start = pattern; | 
					
						
							|  |  |  | 			start++; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 03:30:48 -04:00
										 |  |  | inline static void memset_cell(void *dst, cell pattern, size_t size) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | #ifdef __APPLE__
 | 
					
						
							|  |  |  | 	#ifdef FACTOR_64
 | 
					
						
							|  |  |  | 		memset_pattern8(dst,&pattern,size); | 
					
						
							|  |  |  | 	#else
 | 
					
						
							|  |  |  | 		memset_pattern4(dst,&pattern,size); | 
					
						
							|  |  |  | 	#endif
 | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | 	if(pattern == 0) | 
					
						
							|  |  |  | 		memset(dst,0,size); | 
					
						
							|  |  |  | 	else | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		cell *start = (cell *)dst; | 
					
						
							|  |  |  | 		cell *end = (cell *)((cell)dst + size); | 
					
						
							|  |  |  | 		while(start < end) | 
					
						
							|  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2009-10-31 03:36:46 -04:00
										 |  |  | 			*start = pattern; | 
					
						
							| 
									
										
										
										
											2009-10-31 03:30:48 -04:00
										 |  |  | 			start++; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-20 18:11:50 -04:00
										 |  |  | void *fill_function_descriptor(void *ptr, void *code); | 
					
						
							|  |  |  | void *function_descriptor_field(void *ptr, size_t idx); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 03:30:48 -04:00
										 |  |  | vm_char *safe_strdup(const vm_char *str); | 
					
						
							|  |  |  | cell read_cell_hex(); | 
					
						
							| 
									
										
										
										
											2010-01-07 01:40:20 -05: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
										 |  |  | } |