[movitz-cvs] CVS update: movitz/special-operators.lisp

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Sat Feb 21 02:04:51 UTC 2004


Update of /project/movitz/cvsroot/movitz
In directory common-lisp.net:/tmp/cvs-serv10328

Modified Files:
	special-operators.lisp 
Log Message:
Added inline-assembly macro :returns-mode.

Date: Fri Feb 20 21:04:50 2004
Author: ffjeld

Index: movitz/special-operators.lisp
diff -u movitz/special-operators.lisp:1.14 movitz/special-operators.lisp:1.15
--- movitz/special-operators.lisp:1.14	Tue Feb 17 15:24:06 2004
+++ movitz/special-operators.lisp	Fri Feb 20 21:04:50 2004
@@ -8,7 +8,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Fri Nov 24 16:22:59 2000
 ;;;;                
-;;;; $Id: special-operators.lisp,v 1.14 2004/02/17 20:24:06 ffjeld Exp $
+;;;; $Id: special-operators.lisp,v 1.15 2004/02/21 02:04:50 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -460,7 +460,10 @@
 				    &body inline-asm)
 		   (cdr case-spec)
 		 (when (eq returns :same)
-		   (setf returns result-mode))
+		   (setf returns 
+		     (case result-mode
+		       (:function :multiple-values)
+		       (t result-mode))))
 		 (when (flet ((match (matching-result-mode)
 				(or (eq 'muerte.cl::t matching-result-mode)
 				    (eq t matching-result-mode)
@@ -518,6 +521,10 @@
 				   (setq side-effects t))
 				 (setf modifies (modifies-union modifies sub-modifies))
 				 sub-code))))
+		       (setf (assembly-macro-expander :returns-mode amenv)
+			 #'(lambda (expr)
+			     (assert (= 1 (length expr)))
+			     (list returns)))
 		       (setf (assembly-macro-expander :result-register amenv)
 			 #'(lambda (expr)
 			     (assert (= 1 (length expr)))





More information about the Movitz-cvs mailing list