Skip to content
Snippets Groups Projects
Commit 84ef6cd8 authored by ram's avatar ram
Browse files

Changed NOTE-NON-LOCAL-EXIT to add a use of the NLX continuation to the

%NLX-ENTRY function when we delete the escape function.  Formerly there was no
use to represent the type uncertainty of the thrown value, which could cause
LTN to get confused, perhaps choosing a specialized representation when the
value could in fact be of any type.
parent e88286f9
No related branches found
No related tags found
No related merge requests found
......@@ -181,7 +181,9 @@
;;; reference to NLX-Info structure for the escape function reference. This
;;; will cause the escape function to be deleted (although not removed from
;;; the DFO.) The escape function is no longer needed, and we don't want to
;;; emit code for it.
;;; emit code for it. We then also change the %NLX-ENTRY call to use
;;; the NLX continuation so that there will be a use to represent the NLX
;;; use.
;;;
(defun note-non-local-exit (env exit)
(declare (type environment env) (type exit exit))
......@@ -199,7 +201,10 @@
(assert info)
(close-over info (node-environment exit) env)
(when (eq (functional-kind exit-fun) :escape)
(substitute-leaf (find-constant info) exit-fun))))
(substitute-leaf (find-constant info) exit-fun)
(let ((node (block-last (nlx-info-target info))))
(delete-continuation-use node)
(add-continuation-use node (nlx-info-continuation info))))))
(undefined-value))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment