\f
(defvar *parse-vop-operand-count*)
(defun make-operand-parse-temp ()
- ;; FIXME: potentially causes breakage in contribs from locked
- ;; packages.
- (intern (format nil "OPERAND-PARSE-TEMP-~D" *parse-vop-operand-count*)
- (symbol-package '*parse-vop-operand-count*)))
+ (without-package-locks
+ (intern (format nil "OPERAND-PARSE-TEMP-~D" *parse-vop-operand-count*)
+ (symbol-package '*parse-vop-operand-count*))))
(defun make-operand-parse-load-tn ()
- (intern (format nil "OPERAND-PARSE-LOAD-TN-~D" *parse-vop-operand-count*)
- (symbol-package '*parse-vop-operand-count*)))
+ (without-package-locks
+ (intern (format nil "OPERAND-PARSE-LOAD-TN-~D" *parse-vop-operand-count*)
+ (symbol-package '*parse-vop-operand-count*))))
;;; Given a list of operand specifications as given to DEFINE-VOP,
;;; return a list of OPERAND-PARSE structures describing the fixed
;;; :OFFSET SB-Offset
;;; Force the temporary to be allocated in the specified SC
;;; with the specified offset. Offset is evaluated at
-;;; macroexpand time. If Offset is emitted, the register
+;;; macroexpand time. If Offset is omitted, the register
;;; allocator chooses a free location in SC. If both SC and
;;; Offset are omitted, then the temporary is packed according
;;; to its primitive type.
;;; Similar to the argument/result option, this specifies the
;;; start and end of the temporaries' lives. The defaults are
;;; :LOAD and :SAVE, i.e. the duration of the VOP. The other
-;;; intervening phases are :ARGUMENT,:EVAL and :RESULT.
+;;; intervening phases are :ARGUMENT, :EVAL and :RESULT.
;;; Non-zero sub-phases can be specified by a list, e.g. by
;;; default the second argument's life ends at (:ARGUMENT 1).
;;;
;;; beginning with T specifies a default. If it appears, it must be
;;; last. If no default is specified, and no clause matches, then an
;;; error is signalled.
-(def!macro sc-case (tn &rest forms)
+(def!macro sc-case (tn &body forms)
(let ((n-sc (gensym))
(n-tn (gensym)))
(collect ((clauses))