From dd2867ca3b53cb2353c9f1dbf85c3ebeb9667ee2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20V=C3=A1zquez?= Date: Thu, 6 Jun 2013 12:55:35 +0100 Subject: [PATCH] FFI funcall --- src/compiler.lisp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/compiler.lisp b/src/compiler.lisp index a98e6b6..1d1ea55 100644 --- a/src/compiler.lisp +++ b/src/compiler.lisp @@ -1417,7 +1417,7 @@ (mapcar #'ls-compile args)) ", ") ")"))) (unless (or (symbolp function) (and (consp function) - (eq (car function) 'lambda))) + (member (car function) '(lambda oget)))) (error "Bad function designator `~S'" function)) (cond ((translate-function function) @@ -1426,8 +1426,15 @@ #+jscl (eq (symbol-package function) (find-package "COMMON-LISP")) #-jscl t) (code (ls-compile `',function) ".fvalue" arglist)) + #+jscl + ((symbolp function) + (code (ls-compile `#',function) arglist)) + ((and (consp function) (eq (car function) 'lambda)) + (code (ls-compile `#',function) arglist)) + ((and (consp function) (eq (car function) 'oget)) + (code (ls-compile function) arglist)) (t - (code (ls-compile `#',function) arglist))))) + (error "Bad function descriptor"))))) (defun ls-compile-block (sexps &optional return-last-p decls-allowed-p) (multiple-value-bind (sexps decls) -- 1.7.10.4