]> gitweb.factorcode.org Git - factor.git/blob - vm/utilities.hpp
Merge branch 'master' into s3
[factor.git] / vm / utilities.hpp
1 namespace factor
2 {
3
4 inline static void memset_2(void *dst, u16 pattern, size_t size)
5 {
6 #ifdef __APPLE__
7         cell cell_pattern = (pattern | (pattern << 16));
8         memset_pattern4(dst,&cell_pattern,size);
9 #else
10         if(pattern == 0)
11                 memset(dst,0,size);
12         else
13         {
14                 u16 *start = (u16 *)dst;
15                 u16 *end = (u16 *)((cell)dst + size);
16                 while(start < end)
17                 {
18                         *start = pattern;
19                         start++;
20                 }
21         }
22 #endif
23 }
24
25 inline static void memset_cell(void *dst, cell pattern, size_t size)
26 {
27 #ifdef __APPLE__
28         #ifdef FACTOR_64
29                 memset_pattern8(dst,&pattern,size);
30         #else
31                 memset_pattern4(dst,&pattern,size);
32         #endif
33 #else
34         if(pattern == 0)
35                 memset(dst,0,size);
36         else
37         {
38                 cell *start = (cell *)dst;
39                 cell *end = (cell *)((cell)dst + size);
40                 while(start < end)
41                 {
42                         *start = pattern;
43                         start++;
44                 }
45         }
46 #endif
47 }
48
49 vm_char *safe_strdup(const vm_char *str);
50 cell read_cell_hex();
51 VM_C_API void *factor_memcpy(void *dst, void *src, size_t len);
52
53 }