1.0.32.29: Add build flag :sb-xref-for-internals.
[sbcl.git] / src / compiler / mips / move.lisp
index dcaae73..5bb0c85 100644 (file)
   (:arg-types tagged-num)
   (:note "fixnum untagging")
   (:generator 1
-    (inst sra y x 2)))
+    (inst sra y x n-fixnum-tag-bits)))
 ;;;
 (define-move-vop move-to-word/fixnum :move
   (any-reg descriptor-reg) (signed-reg unsigned-reg))
   (:results (y :scs (signed-reg unsigned-reg)))
   (:note "constant load")
   (:generator 1
-    (inst li y (tn-value x))))
+    (cond ((sb!c::tn-leaf x)
+           (inst li y (tn-value x)))
+          (t
+           (loadw y code-tn (tn-offset x) other-pointer-lowtag)
+           (inst sra y y n-fixnum-tag-bits)))))
 ;;;
 (define-move-vop move-to-word-c :move
   (constant) (signed-reg unsigned-reg))
       (inst sll y x 2)
 
       (with-fixed-allocation
-          (y pa-flag temp bignum-widetag (1+ bignum-digits-offset))
+          (y pa-flag temp bignum-widetag (1+ bignum-digits-offset) nil)
         (storew x y bignum-digits-offset other-pointer-lowtag))
       (inst b done)
       (inst nop)