5 // Fill in a PPC function descriptor
6 void* fill_function_descriptor(void* ptr, void* code) {
7 void** descriptor = (void**)ptr;
14 // Get a field from a PPC function descriptor
15 void* function_descriptor_field(void* ptr, size_t idx) {
16 return ptr ? ((void**)ptr)[idx] : ptr;
19 // If memory allocation fails, bail out
20 vm_char* safe_strdup(const vm_char* str) {
21 vm_char* ptr = STRDUP(str);
23 fatal_error("Out of memory in safe_strdup", 0);
27 cell read_cell_hex() {
29 std::cin >> std::hex >> cell >> std::dec;
35 // On Windows, memcpy() is in a different DLL and the non-optimizing
36 // compiler can't find it
37 VM_C_API void* factor_memcpy(void* dst, void* src, size_t len) {
38 return memcpy(dst, src, len);