0.9.2.45:
[sbcl/lichteblau.git] / src / compiler / mips / show.lisp
blobd20f42e9761d4417e0349d837a038a349dc06571
1 (in-package "SB!VM")
4 (define-vop (print)
5 (:args (object :scs (descriptor-reg) :target a0))
6 (:results (result :scs (descriptor-reg)))
7 (:save-p t)
8 (:temporary (:sc any-reg :offset cfunc-offset :target result :to (:result 0))
9 cfunc)
10 (:temporary (:sc descriptor-reg :offset 4 :from (:argument 0)) a0)
11 (:temporary (:sc control-stack :offset nfp-save-offset) nfp-save)
12 (:vop-var vop)
13 (:generator 0
14 (let ((cur-nfp (current-nfp-tn vop)))
15 (move a0 object)
16 (when cur-nfp
17 (store-stack-tn nfp-save cur-nfp))
18 (inst li cfunc (make-fixup "debug_print" :foreign))
19 (inst jal (make-fixup "call_into_c" :foreign))
20 (inst addu nsp-tn nsp-tn -16)
21 (inst addu nsp-tn nsp-tn 16)
22 (when cur-nfp
23 (load-stack-tn cur-nfp nfp-save))
24 (move result cfunc))))