;;; ...and one lock to rule them. Spinlock because for certain (rare)
;;; cases this lock might be grabbed in the course of method dispatch
-;;; -- and mostly this is already under the *big-compiler-lock*.
+;;; -- and mostly this is already under the *world-lock*
(defvar *pv-lock*
(sb-thread::make-spinlock :name "pv table index lock"))
(slot-boundp 'boundp)))
(var (extract-the var-form))
(slot-name (constant-form-value slot-name-form env)))
- (when (symbolp var)
+ (when (and (symbolp var) (not (var-special-p var env)))
(let* ((rebound? (caddr (var-declaration '%variable-rebinding var env)))
(parameter-or-nil (car (memq (or rebound? var)
required-parameters))))
(list name (pop tail))
(list name))))
(dolist (var tail)
- (if (member var args)
+ (if (member var args :test #'eq)
;; Quietly remove IGNORE declarations on
;; args when a next-method is involved, to
;; prevent compiler warnings about ignored
;; Given a valid lambda list, extract the parameter names.
(loop for x in lambda-list
with res = nil
- do (unless (member x lambda-list-keywords)
+ do (unless (member x lambda-list-keywords :test #'eq)
(if (consp x)
(let ((name (car x)))
(if (consp name)