(defmacro defun (name args &rest body)
`(progn
- (declaim (non-overridable ,name))
(fset ',name
(named-lambda ,(symbol-name name) ,args
,@(if (and (stringp (car body)) (not (null (cdr body))))
(constant
(dolist (name (cdr decl))
(let ((b (global-binding name 'variable 'variable)))
- (push-binding-declaration 'constant b))))
- (non-overridable
- (dolist (name (cdr decl))
- (let ((b (global-binding name 'function 'function)))
- (push-binding-declaration 'non-overridable b))))))
+ (push-binding-declaration 'constant b))))))
#+ecmalisp
(fset 'proclaim #'!proclaim)
(defun compile-funcall (function args)
(let ((values-funcs (if *multiple-value-p* "values" "pv")))
(if (and (symbolp function)
- (claimp function 'function 'non-overridable))
+ #+ecmalisp (eq (symbol-package function) (find-package "COMMON-LISP"))
+ #+common-lisp t)
(concat (ls-compile `',function) ".fvalue("
(join (cons values-funcs (mapcar #'ls-compile args))
", ")