Skip to content
Snippets Groups Projects
Commit 742d9767 authored by wlott's avatar wlott
Browse files

Rob added code to keep it from spilling the NFP.

parent 55ca2cb6
No related branches found
No related tags found
No related merge requests found
...@@ -811,6 +811,11 @@ ...@@ -811,6 +811,11 @@
;;; the TN in that location. There must be some TN live in every location, ;;; the TN in that location. There must be some TN live in every location,
;;; since normal load TN packing failed. ;;; since normal load TN packing failed.
;;; ;;;
;;; We never spill component TNs, since there are used magically within VOPs.
;;;
;;; ### Somewhat dubious to spill environment TNs, but we would get in
;;; ### trouble if we never did.
;;;
;;; Spilling is done using the same mechanism as register saving. ;;; Spilling is done using the same mechanism as register saving.
;;; ;;;
(defun spill-and-pack-load-tn (sc op) (defun spill-and-pack-load-tn (sc op)
...@@ -818,7 +823,7 @@ ...@@ -818,7 +823,7 @@
(let ((vop (tn-ref-vop op)) (let ((vop (tn-ref-vop op))
(sb (sc-sb sc))) (sb (sc-sb sc)))
(event spill-tn (vop-node vop)) (event spill-tn (vop-node vop))
(dolist (loc (sc-locations sc) (dolist (loc (sc-locations sc)
(failed-to-pack-load-tn-error op)) (failed-to-pack-load-tn-error op))
(when (do ((ref (vop-refs vop) (tn-ref-next-ref ref))) (when (do ((ref (vop-refs vop) (tn-ref-next-ref ref)))
...@@ -834,13 +839,14 @@ ...@@ -834,13 +839,14 @@
(return nil)))) (return nil))))
(let ((victim (svref (finite-sb-live-tns sb) loc))) (let ((victim (svref (finite-sb-live-tns sb) loc)))
(assert victim) (assert victim)
(save-complex-writer-tn victim vop) (unless (eq (tn-kind victim) :component)
(when (eq (template-result-types (vop-info vop)) :conditional) (save-complex-writer-tn victim vop)
(spill-conditional-arg-tn victim vop))) (when (eq (template-result-types (vop-info vop)) :conditional)
(spill-conditional-arg-tn victim vop))
(let ((res (make-tn 0 :load nil sc)))
(setf (tn-offset res) loc) (let ((res (make-tn 0 :load nil sc)))
(return res)))))) (setf (tn-offset res) loc)
(return res))))))))
;;; Pack-Load-TN -- Internal ;;; Pack-Load-TN -- Internal
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment