]> gitweb.factorcode.org Git - factor.git/blobdiff - vm/utilities.cpp
audio.engine.test: cleanup using
[factor.git] / vm / utilities.cpp
old mode 100755 (executable)
new mode 100644 (file)
index 8f063a9..60d524a
@@ -1,21 +1,41 @@
 #include "master.hpp"
 
-namespace factor
-{
+namespace factor {
 
-/* 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;
+// 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;
 }
 
-cell read_cell_hex()
-{
-       cell cell;
-       if(scanf(CELL_HEX_FORMAT,&cell) < 0) exit(1);
-       return cell;
+// 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);
 }
 
 }