-;;; Written by William Lott.
-;;;
-(in-package "SB!VM")
+;;;; VOPs and macro magic for calling static functions
+;;;; This software is part of the SBCL system. See the README file for
+;;;; more information.
+;;;;
+;;;; This software is derived from the CMU CL system, which was
+;;;; written at Carnegie Mellon University and released into the
+;;;; public domain. The software is in the public domain and is
+;;;; provided with absolutely no warranty. See the COPYING and CREDITS
+;;;; files for more information.
+(in-package "SB!VM")
(define-vop (static-fun-template)
(:save-p t)
(:temporary (:scs (descriptor-reg)) move-temp)
(:temporary (:sc descriptor-reg :offset lra-offset) lra)
(:temporary (:sc interior-reg :offset lip-offset) entry-point)
- (:temporary (:scs (descriptor-reg)) func)
(:temporary (:sc any-reg :offset nargs-offset) nargs)
(:temporary (:sc any-reg :offset ocfp-offset) old-fp)
(:temporary (:sc control-stack :offset nfp-save-offset) nfp-save))
(moves)))
(defun static-fun-template-vop (num-args num-results)
- (assert (and (<= num-args register-arg-count)
+ (unless (and (<= num-args register-arg-count)
(<= num-results register-arg-count))
- (num-args num-results)
- "Either too many args (~W) or too many results (~W). Max = ~W"
- num-args num-results register-arg-count)
+ (error "either too many args (~W) or too many results (~W); max = ~W"
+ num-args num-results register-arg-count))
(let ((num-temps (max num-args num-results)))
(collect ((temp-names) (temps) (arg-names) (args) (result-names) (results))
(dotimes (i num-results)