(defmacro with-spinlock-and-without-gcing ((spinlock) &body body)
#!-sb-thread
(declare (ignore spinlock))
- `(unwind-protect
- (let ((*gc-inhibit* t))
- #!+sb-thread
- (sb!thread::get-spinlock ,spinlock)
- ,@body)
- #!+sb-thread
- (sb!thread::release-spinlock ,spinlock)
- ;; the test is racy, but it can err only on the overeager side
- (sb!kernel::maybe-handle-pending-gc)))
+ (with-unique-names (old-gc-inhibit)
+ `(let ((,old-gc-inhibit *gc-inhibit*)
+ (*gc-inhibit* t))
+ (unwind-protect
+ (progn
+ #!+sb-thread
+ (sb!thread::get-spinlock ,spinlock)
+ ,@body)
+ #!+sb-thread
+ (sb!thread::release-spinlock ,spinlock)
+ (let ((*gc-inhibit* ,old-gc-inhibit))
+ ;; the test is racy, but it can err only on the overeager side
+ (sb!kernel::maybe-handle-pending-gc))))))
(eval-when (:compile-toplevel :load-toplevel :execute)
(defconstant max-hash sb!xc:most-positive-fixnum))
;;; (addendum to test for #331: conditions suffered the same problem)
(define-condition condition-bug-331-super () ())
(define-condition condition-bug-331-sub (condition-bug-331-super) ())
-(let ((subs (sb-mop:class-direct-subclasses
+(let ((subs (sb-mop:class-direct-subclasses
(find-class 'condition-bug-331-super))))
(assert (= 1 (length subs)))
(assert (eq (car subs) (find-class 'condition-bug-331-sub))))
(let* ((gf #'slot331a)
(methods (sb-mop:generic-function-methods gf)))
(assert (= (length methods) 1))
- (assert (eq (car methods)
- (find-method #'slot331a nil
+ (assert (eq (car methods)
+ (find-method #'slot331a nil
(list (find-class 'condition-bug-331a))))))
;;; detection of multiple class options in defclass, reported by Bruno Haible
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.9.6.51"
+"0.9.6.52"