0.9.1.52:
[sbcl.git] / src / compiler / alpha / macros.lisp
index b964659..7aaebf6 100644 (file)
        (inst li (logior (ash (1- ,size) n-widetag-bits) ,widetag) ,temp-tn)
        (storew ,temp-tn ,result-tn 0 other-pointer-lowtag)
        ,@body)))
+
+(defun align-csp (temp)
+  ;; is used for stack allocation of dynamic-extent objects
+  (let ((aligned (gen-label)))
+    (inst and csp-tn lowtag-mask temp)
+    (inst beq temp aligned)
+    (inst addq csp-tn n-word-bytes csp-tn)
+    (storew zero-tn csp-tn -1)
+    (emit-label aligned)))
 \f
 ;;;; error code
 (eval-when (:compile-toplevel :load-toplevel :execute)