#include "master.hpp" namespace factor { // Fill in a PPC function descriptor void* fill_function_descriptor(void* ptr, void* code) { void** descriptor = (void**)ptr; descriptor[0] = code; descriptor[1] = NULL; descriptor[2] = NULL; return descriptor; } // Get a field from a PPC function descriptor void* function_descriptor_field(void* ptr, size_t idx) { return ptr ? ((void**)ptr)[idx] : ptr; } // If memory allocation fails, bail out vm_char* safe_strdup(const vm_char* str) { vm_char* ptr = STRDUP(str); if (!ptr) fatal_error("Out of memory in safe_strdup", 0); return ptr; } cell read_cell_hex() { cell cell; std::cin >> std::hex >> cell >> std::dec; if (!std::cin.good()) exit(1); return cell; } // On Windows, memcpy() is in a different DLL and the non-optimizing // compiler can't find it VM_C_API void* factor_memcpy(void* dst, void* src, size_t len) { return memcpy(dst, src, len); } }