]> gitweb.factorcode.org Git - factor.git/blob - vm/utilities.cpp
audio.engine.test: cleanup using
[factor.git] / vm / utilities.cpp
1 #include "master.hpp"
2
3 namespace factor {
4
5 // Fill in a PPC function descriptor
6 void* fill_function_descriptor(void* ptr, void* code) {
7   void** descriptor = (void**)ptr;
8   descriptor[0] = code;
9   descriptor[1] = NULL;
10   descriptor[2] = NULL;
11   return descriptor;
12 }
13
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;
17 }
18
19 // If memory allocation fails, bail out
20 vm_char* safe_strdup(const vm_char* str) {
21   vm_char* ptr = STRDUP(str);
22   if (!ptr)
23     fatal_error("Out of memory in safe_strdup", 0);
24   return ptr;
25 }
26
27 cell read_cell_hex() {
28   cell cell;
29   std::cin >> std::hex >> cell >> std::dec;
30   if (!std::cin.good())
31     exit(1);
32   return cell;
33 }
34
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);
39 }
40
41 }