#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); } }