]> gitweb.factorcode.org Git - factor.git/blobdiff - vm/code_blocks.cpp
VM: always use undecorated names when loading ffi functions
[factor.git] / vm / code_blocks.cpp
index d3a2f88f4d43f3392955a7971d7d59426154ba38..0eb1ed338f833b02ff7a8e10b55c2d98c633c861 100644 (file)
@@ -156,28 +156,11 @@ cell factor_vm::compute_dlsym_address(array* parameters,
   if (d != NULL && !d->handle)
     return undef;
 
-  cell type = TAG(symbol);
-  if (type == BYTE_ARRAY_TYPE) {
-
-    symbol_char* name = alien_offset(symbol);
-    cell sym = ffi_dlsym_raw(d, name);
-    sym = toc ? FUNCTION_TOC_POINTER(sym) : FUNCTION_CODE_POINTER(sym);
-    return sym ? sym : undef;
-
-  } else if (type == ARRAY_TYPE) {
-
-    array* names = untag<array>(symbol);
-    for (cell i = 0; i < array_capacity(names); i++) {
-      symbol_char* name = alien_offset(array_nth(names, i));
-      cell sym = ffi_dlsym_raw(d, name);
-      sym = toc ? FUNCTION_TOC_POINTER(sym) : FUNCTION_CODE_POINTER(sym);
-      if (sym)
-        return sym;
-    }
-    return undef;
-
-  }
-  return -1;
+  FACTOR_ASSERT(TAG(symbol) == BYTE_ARRAY_TYPE);
+  symbol_char* name = alien_offset(symbol);
+  cell sym = ffi_dlsym_raw(d, name);
+  sym = toc ? FUNCTION_TOC_POINTER(sym) : FUNCTION_CODE_POINTER(sym);
+  return sym ? sym : undef;
 }
 
 cell factor_vm::compute_vm_address(cell arg) {