1.0.3.32: make-local-alien stack alignment simplification
[sbcl.git] / src / compiler / ltv.lisp
index b84c0de..4653dd9 100644 (file)
@@ -13,7 +13,8 @@
 
 (defknown %load-time-value (t) t (flushable movable))
 
-(def-ir1-translator load-time-value ((form &optional read-only-p) start cont)
+(def-ir1-translator load-time-value
+    ((form &optional read-only-p) start next result)
   #!+sb-doc
   "Arrange for FORM to be evaluated at load-time and use the value produced
    as if it were a constant. If READ-ONLY-P is non-NIL, then the resultant
    storage."
   (if (producing-fasl-file)
       (multiple-value-bind (handle type)
-         (compile-load-time-value (if read-only-p
-                                      form
-                                      `(make-value-cell ,form)))
-       (declare (ignore type))
-       (ir1-convert start cont
-                    (if read-only-p
-                        `(%load-time-value ',handle)
-                        `(value-cell-ref (%load-time-value ',handle)))))
+          (compile-load-time-value (if read-only-p
+                                       form
+                                       `(make-value-cell ,form)))
+        (declare (ignore type))
+        (ir1-convert start next result
+                     (if read-only-p
+                         `(%load-time-value ',handle)
+                         `(value-cell-ref (%load-time-value ',handle)))))
       (let ((value
-            (handler-case (eval form)
-              (error (condition)
-                (compiler-error "(during EVAL of LOAD-TIME-VALUE)~%~A"
-                                condition)))))
-       (ir1-convert start cont
-                    (if read-only-p
-                        `',value
-                        `(value-cell-ref ',(make-value-cell value)))))))
+             (handler-case (eval form)
+               (error (condition)
+                 (compiler-error "(during EVAL of LOAD-TIME-VALUE)~%~A"
+                                 condition)))))
+        (ir1-convert start next result
+                     (if read-only-p
+                         `',value
+                         `(value-cell-ref ',(make-value-cell value)))))))
 
 (defoptimizer (%load-time-value ir2-convert) ((handle) node block)
-  (aver (constant-continuation-p handle))
-  (let ((cont (node-cont node))
-       (tn (make-load-time-value-tn (continuation-value handle)
-                                    *universal-type*)))
-    (move-continuation-result node block (list tn) cont)))
+  (aver (constant-lvar-p handle))
+  (let ((lvar (node-lvar node))
+        (tn (make-load-time-value-tn (lvar-value handle)
+                                     *universal-type*)))
+    (move-lvar-result node block (list tn) lvar)))