;;; used.
(defvar *pv-tables* (make-hash-table :test 'equal))
-;;; ...and one lock to rule them. Spinlock because for certain (rare)
+;;; ...and one lock to rule them. Lock because for certain (rare)
;;; cases this lock might be grabbed in the course of method dispatch
;;; -- and mostly this is already under the *world-lock*
(defvar *pv-lock*
- (sb-thread::make-spinlock :name "pv table index lock"))
+ (sb-thread:make-mutex :name "pv table index lock"))
(defun intern-pv-table (&key slot-name-lists)
(flet ((intern-slot-names (slot-names)
:pv-size (* 2 (reduce #'+ snl
:key (lambda (slots)
(length (cdr slots))))))))))
- (sb-thread::with-spinlock (*pv-lock*)
+ (sb-thread:with-mutex (*pv-lock*)
(%intern-pv-table (mapcar #'intern-slot-names slot-name-lists)))))
\f
(defun use-standard-slot-access-p (class slot-name type)
;;; Check whether the binding of the named variable is modified in the
;;; method body.
(defun parameter-modified-p (parameter-name env)
- (let ((modified-variables (macroexpand '%parameter-binding-modified env)))
+ (let ((modified-variables (%macroexpand '%parameter-binding-modified env)))
(memq parameter-name modified-variables)))
(defun optimize-slot-value (form slots required-parameters env)
;; args when a next-method is involved, to
;; prevent compiler warnings about ignored
;; args being read.
- (unless (and (eq 'ignore name) (member var req-args :test #'eq) (or cnm-p (member var parameters-setqd)))
+ (unless (and (eq 'ignore name)
+ (member var req-args :test #'eq)
+ (or cnm-p (member var parameters-setqd)))
(push var outers))
(push var inners)))
(when outers