(when ,topmost
(setf *ignored-package-locks* :invalid)))))))
-(defun compiler-assert-symbol-home-package-unlocked (symbol control)
+(defun program-assert-symbol-home-package-unlocked (context symbol control)
#!-sb-package-locks
- (declare (ignore symbol control))
+ (declare (ignore context symbol control))
#!+sb-package-locks
- (flet ((resignal (condition)
- ;; Signal the condition to give user defined handlers a chance,
- ;; if they decline convert to compiler-error.
- (signal condition)
- (sb!c:compiler-error condition)))
- (handler-bind ((package-lock-violation #'resignal))
- (with-single-package-locked-error ()
- (assert-symbol-home-package-unlocked symbol control)))))
+ (handler-bind ((package-lock-violation
+ (lambda (condition)
+ (ecase context
+ (:compile
+ (warn "Compile-time package lock violation:~% ~A"
+ condition)
+ (sb!c:compiler-error condition))
+ (:eval
+ (eval-error condition))))))
+ (with-single-package-locked-error (:symbol symbol control))))
(defmacro without-package-locks (&body body)
#!+sb-doc