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