1.0.4.3: interrupt and GC issues
[sbcl.git] / src / compiler / generic / vm-tran.lisp
index d616f09..86efb42 100644 (file)
@@ -60,7 +60,6 @@
                       (funcall func value (lvar-value offset))))
           (give-up-ir1-transform "constant is too large for inlining"))
         (splice-fun-args index func 2)
-        (format t "preparing to transform with ~A ~D~%" func value)
         `(lambda (thing index off1 off2 ,@(when setter-p
                                             '(value)))
            (,fun-name thing index (,func off2 off1) ,@(when setter-p
                 result)
             adds
             shifts)))
+
+\f
+;;; Transform GET-LISP-OBJ-ADDRESS for constant immediates, since the normal
+;;; VOP can't handle them.
+
+(deftransform sb!vm::get-lisp-obj-address ((obj) ((constant-arg fixnum)))
+  (ash (lvar-value obj) sb!vm::n-fixnum-tag-bits))
+
+(deftransform sb!vm::get-lisp-obj-address ((obj) ((constant-arg character)))
+  (logior sb!vm::character-widetag
+          (ash (char-code (lvar-value obj)) sb!vm::n-widetag-bits)))