[prev in list] [next in list] [prev in thread] [next in thread]
List: sbcl-commits
Subject: [Sbcl-commits] CVS: sbcl/src/compiler gtn.lisp,1.19,1.20
From: "Alastair Bridgewater" <lisphacker () users ! sourceforge ! net>
Date: 2010-11-27 3:01:52
Message-ID: E1PMB2u-00077r-PS () sfp-cvsdas-3 ! v30 ! ch3 ! sourceforge ! com
[Download RAW message or body]
Update of /cvsroot/sbcl/sbcl/src/compiler
In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv27373/src/compiler
Modified Files:
gtn.lisp
Log Message:
1.0.44.34: gtn: KLUDGE the lambda-var assignment to not break tail-calls.
* As an utter KLUDGE, when assigning TNs for closed-over lambda
variables with implicit value-cells, make the TNs component-live
instead of physenv-live. This prevents any possible problems with
the new physenv introduced by a tail-call overwriting the storage
for the variable.
Index: gtn.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/compiler/gtn.lisp,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- gtn.lisp 9 Nov 2010 19:45:23 -0000 1.19
+++ gtn.lisp 27 Nov 2010 03:01:50 -0000 1.20
@@ -56,6 +56,16 @@
;; live over the dynamic contour of the physenv.
(setf (tn-sc res) (svref *backend-sc-numbers*
sb!vm:control-stack-sc-number))
+ ;; KLUDGE: In the case of a tail-local-call, the entire
+ ;; stack frame is overwritten by the physenv of the called
+ ;; function. Unfortunately, the tail-call appears to end
+ ;; the dynamic contour of the physenv, meaning that the
+ ;; stack slot occupied by the LAMBDA-VAR may be reassigned.
+ ;; Ideally, we might make the TN physenv-live across the
+ ;; physenvs of the tail-set of the lambda, but as a stopgap
+ ;; we can make it component-live instead.
+ (component-live-tn res)
+ #+(or)
(physenv-live-tn res (lambda-physenv fun)))
(debug-variable-p
------------------------------------------------------------------------------
Increase Visibility of Your 3D Game App & Earn a Chance To Win $500!
Tap into the largest installed PC base & get more eyes on your game by
optimizing for Intel(R) Graphics Technology. Get started today with the
Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs.
http://p.sf.net/sfu/intelisp-dev2dev
_______________________________________________
Sbcl-commits mailing list
Sbcl-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sbcl-commits
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic