anchor.diff:    #+dffi
     `(si::call-cfun ,pointer ,return-type (list ,@types) (list ,@values)))
   
  -#.(cl:when (>= ext:+ecl-version-number+ 100402)
  -    (cl:pushnew :ecl-with-backend cl:*features*)
  -    cl:nil)
  -
  -(defun produce-function-pointer-call (pointer types values return-type)
  -  #-ecl-with-backend
  -  (progn
  -    (if (eq *cffi-ecl-method* :dffi)
  -        (dffi-function-pointer-call pointer types values return-type)
  -        (c-inline-function-pointer-call pointer types values return-type)))
  -  #+ecl-with-backend
  -  `(ext:with-backend
  -     :bytecodes
  -     ,(dffi-function-pointer-call pointer types values return-type)
  -     :c/c++
  -     (if (eq *cffi-ecl-method* :dffi)
  -         ,(dffi-function-pointer-call pointer types values return-type)
  -         ,(c-inline-function-pointer-call pointer types values return-type))))
  -
   (defun foreign-funcall-parse-args (args)
     "Return three values, lists of arg types, values, and result type."
     (let ((return-type :void))
  
positive.code:    #:%mem-set
     #:%foreign-funcall
     #:%foreign-funcall-pointer
     #:%foreign-type-alignment
     #:%foreign-type-size
     #:%load-foreign-library
  
negative.code: 
  (defconstant +ecl-inline-codes+ "#0,#1,#2,#3,#4,#5,#6,#7,#8,#9,#a,#b,#c,#d,#e,#f,#g,#h,#i,#j,#k,#l,#m,#n,#o,#p,#q,#r,#s,#t,#u,#v,#w,#x,#y,#z")
  
  (defun c-inline-function-call (thing fixed-types types values return-type dynamic-call variadic)
    (when dynamic-call
      (when (stringp thing)
        (setf thing `(%foreign-symbol-pointer ,thing nil)))
      (push thing values)
      (push :pointer-void types))
    (let* ((decl-args
            (format nil "~{~A~^, ~}~A"
                    (mapcar #'ecl-type->c-type fixed-types) (if (null variadic) "" ", ...")))
           (call-args
            (if dynamic-call
                ;; #0 is already used in a cast (it is a function pointer)
                (subseq +ecl-inline-codes+ 3 (max 3 (1- (* (length values) 3))))
                ;; #0 is not used, so we start from the beginning
                (subseq +ecl-inline-codes+ 0 (max 0 (1- (* (length values) 3))))))
           (clines
            (if dynamic-call
                nil
                (format nil "extern ~A ~A(~A);"
                        (ecl-type->c-type return-type) thing decl-args)))
           (call-code
            (if dynamic-call
                (format nil "((~A (*)(~A))(#0))(~A)"
                        (ecl-type->c-type return-type) decl-args call-args)
                (format nil "~A(~A)" thing call-args))))
      `(progn
         (ffi:clines ,@(ensure-list clines))
         (ffi:c-inline ,values ,types ,return-type ,call-code :one-liner t :side-effects t))))
  
  (defun dffi-function-pointer-call (pointer types values return-type)
    (when (stringp pointer)
  