[movitz-cvs] CVS update: movitz/compiler.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Sun Apr 18 23:12:38 UTC 2004
Update of /project/movitz/cvsroot/movitz
In directory common-lisp.net:/tmp/cvs-serv16361
Modified Files:
compiler.lisp
Log Message:
Fixed one compiler bug that would show itself compiling e.g.
(setf x (setf y ...)). Also removed some improper use of ecx as
temporary register.
Date: Sun Apr 18 19:12:37 2004
Author: ffjeld
Index: movitz/compiler.lisp
diff -u movitz/compiler.lisp:1.53 movitz/compiler.lisp:1.54
--- movitz/compiler.lisp:1.53 Sat Apr 17 11:33:45 2004
+++ movitz/compiler.lisp Sun Apr 18 19:12:37 2004
@@ -8,7 +8,7 @@
;;;; Created at: Wed Oct 25 12:30:49 2000
;;;; Distribution: See the accompanying file COPYING.
;;;;
-;;;; $Id: compiler.lisp,v 1.53 2004/04/17 15:33:45 ffjeld Exp $
+;;;; $Id: compiler.lisp,v 1.54 2004/04/18 23:12:37 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -3064,7 +3064,7 @@
(or tmp-register
(unless (member preferred protect-registers)
preferred)
- (first (set-difference '(:eax :ebx :ecx :edx)
+ (first (set-difference '(:eax :ebx :edx)
protect-registers))
(error "Unable to chose a temporary register.")))
(install-for-single-value (lexb lexb-location result-mode indirect-p)
@@ -3238,8 +3238,8 @@
dest-location
binding
destination)
- (append (install-for-single-value binding binding-location :ecx nil)
- (make-store-lexical result-mode :ecx nil frame-map))))))
+ (append (install-for-single-value binding binding-location :eax nil)
+ (make-store-lexical result-mode :eax nil frame-map))))))
(t (make-result-and-returns-glue
result-mode :eax
(install-for-single-value binding binding-location :eax nil)))
@@ -4413,9 +4413,10 @@
((:lexical-binding)
(case (result-mode-type returns-provided)
(:lexical-binding
- (assert (eq desired-result returns-provided) ()
- "Desired-result ~S produced a value in ~S for code ~W." desired-result returns-provided code)
- (values code returns-provided))
+ (if (eq desired-result returns-provided)
+ (values code returns-provided)
+ (values (append code `((:load-lexical ,returns-provided ,desired-result)))
+ returns-provided)))
((:eax :multiple-values)
(values (append code
`((:store-lexical ,desired-result :eax
More information about the Movitz-cvs
mailing list