(in-package "SB!VM")
-(file-comment
- "$Header$")
-
-;; The move-argument vop is going to store args on the stack for
+;; The MOVE-ARGUMENT vop is going to store args on the stack for
;; call-out. These tn's will be used for that. move-arg is normally
;; used for things going down the stack but C wants to have args
;; indexed in the positive direction.
(sc-number-or-lose sc-name)
offset))
-(defstruct arg-state
+(defstruct (arg-state (:copier nil))
(stack-frame-size 0))
(def-alien-type-method (integer :arg-tn) (type state)
(setf (arg-state-stack-frame-size state) (1+ stack-frame-size))
(my-make-wired-tn 'single-float 'single-stack stack-frame-size)))
-(defstruct result-state
+(defstruct (result-state (:copier nil))
(num-results 0))
(defun result-reg-offset (slot)
(when values
(invoke-alien-type-method :result-tn (car values) state))))
-(def-vm-support-routine make-call-out-tns (type)
+(!def-vm-support-routine make-call-out-tns (type)
(let ((arg-state (make-arg-state)))
(collect ((arg-tns))
(dolist #+nil ;; this reversed list seems to cause the alien botches!!
(:info amount)
(:results (result :scs (sap-reg any-reg)))
(:generator 0
- (assert (location= result esp-tn))
+ (aver (location= result esp-tn))
(unless (zerop amount)
(let ((delta (logandc2 (+ amount 3) 3)))
(inst sub esp-tn delta)))
(:info amount)
(:results (result :scs (sap-reg any-reg)))
(:generator 0
- (assert (not (location= result esp-tn)))
+ (aver (not (location= result esp-tn)))
(unless (zerop amount)
(let ((delta (logandc2 (+ amount 3) 3)))
(inst sub (make-ea :dword
- :disp (+ *nil-value*
+ :disp (+ nil-value
(static-symbol-offset '*alien-stack*)
(ash symbol-value-slot word-shift)
(- other-pointer-type)))
(unless (zerop amount)
(let ((delta (logandc2 (+ amount 3) 3)))
(inst add (make-ea :dword
- :disp (+ *nil-value*
+ :disp (+ nil-value
(static-symbol-offset '*alien-stack*)
(ash symbol-value-slot word-shift)
(- other-pointer-type)))