[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