[movitz-cvs] CVS update: movitz/losp/muerte/more-macros.lisp

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Thu May 5 20:52:12 UTC 2005


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

Modified Files:
	more-macros.lisp 
Log Message:
Changed order of arguments for %run-time-context-slot, new signature
is (context slot-name), where nil may be used as a designator for
(current-run-time-context).

Date: Thu May  5 22:52:11 2005
Author: ffjeld

Index: movitz/losp/muerte/more-macros.lisp
diff -u movitz/losp/muerte/more-macros.lisp:1.26 movitz/losp/muerte/more-macros.lisp:1.27
--- movitz/losp/muerte/more-macros.lisp:1.26	Thu May  5 20:08:20 2005
+++ movitz/losp/muerte/more-macros.lisp	Thu May  5 22:52:10 2005
@@ -10,7 +10,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Fri Jun  7 15:05:57 2002
 ;;;;                
-;;;; $Id: more-macros.lisp,v 1.26 2005/05/05 18:08:20 ffjeld Exp $
+;;;; $Id: more-macros.lisp,v 1.27 2005/05/05 20:52:10 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -318,14 +318,15 @@
 			      ,format-control , at format-arguments)
      , at body))
 
-(define-compiler-macro %run-time-context-slot (&whole form &environment env slot-name
-					       &optional (context '(current-run-time-context)))
-  (if (not (and (movitz:movitz-constantp slot-name env)))
+(define-compiler-macro %run-time-context-slot (&whole form &environment env context slot-name)
+  (if (not (movitz:movitz-constantp slot-name env))
       form
     (let* ((slot-name (movitz::eval-form slot-name env))
 	   (slot-type (bt:binary-slot-type 'movitz::movitz-run-time-context
 					   (intern (symbol-name slot-name) :movitz))))
-      (if (equal context '(current-run-time-context))
+      (if (or (and (movitz:movitz-constantp context env)
+		   (eq nil (movitz:movitz-eval context env)))
+	      (equal context '(current-run-time-context)))
 	  (ecase slot-type
 	    (movitz::word
 	     `(with-inline-assembly (:returns :eax)
@@ -359,26 +360,31 @@
 					 ,(- (movitz:tag :other)))) :ecx))))))))
 	
 
-(define-compiler-macro (setf %run-time-context-slot) (&whole form &environment env value slot-name
-						      &optional (context '(current-run-time-context)))
-  (if (not (and (movitz:movitz-constantp slot-name env)
-		(equal context '(current-run-time-context))))
+(define-compiler-macro (setf %run-time-context-slot) (&whole form &environment env value context slot-name)
+  (if (not (movitz:movitz-constantp slot-name env))
       form
-    (let ((slot-name (movitz:movitz-eval slot-name env)))
-      (ecase (bt:binary-slot-type 'movitz::movitz-run-time-context (intern (symbol-name slot-name) :movitz))
-	(movitz:word
-	 `(with-inline-assembly (:returns :eax)
-	    (:compile-form (:result-mode :eax) ,value)
-	    (:locally (:movl :eax (:edi (:edi-offset ,slot-name))))))
-	(movitz:lu32
-	 `(with-inline-assembly (:returns :untagged-fixnum-ecx)
-	    (:compile-form (:result-mode :untagged-fixnum-ecx) ,value)
-	    (:locally (:movl :ecx (:edi (:edi-offset ,slot-name))))))
-	(movitz:code-vector-word
-	 `(with-inline-assembly (:returns :eax)
-	    (:compile-form (:result-mode :eax) ,value)
-	    (:leal (:eax ,(bt:slot-offset 'movitz:movitz-basic-vector 'movitz::data)) :ecx)
-	    (:locally (:movl :ecx (:edi (:edi-offset ,slot-name))))))))))
+    (let* ((slot-name (movitz::eval-form slot-name env))
+	   (slot-type (bt:binary-slot-type 'movitz::movitz-run-time-context
+					   (intern (symbol-name slot-name) :movitz))))
+      (if (or (and (movitz:movitz-constantp context env)
+		   (eq nil (movitz:movitz-eval context env)))
+	      (equal context '(current-run-time-context)))
+	  (ecase slot-type
+	    (movitz:word
+	     `(with-inline-assembly (:returns :eax)
+		(:compile-form (:result-mode :eax) ,value)
+		(:locally (:movl :eax (:edi (:edi-offset ,slot-name))))))
+	    (movitz:lu32
+	     `(with-inline-assembly (:returns :untagged-fixnum-ecx)
+		(:compile-form (:result-mode :untagged-fixnum-ecx) ,value)
+		(:locally (:movl :ecx (:edi (:edi-offset ,slot-name))))))
+	    (movitz:code-vector-word
+	     `(with-inline-assembly (:returns :eax)
+		(:compile-form (:result-mode :eax) ,value)
+		(:leal (:eax ,(bt:slot-offset 'movitz:movitz-basic-vector 'movitz::data)) :ecx)
+		(:locally (:movl :ecx (:edi (:edi-offset ,slot-name)))))))
+	;; FIXME
+	form))))
 
 (define-compiler-macro read-time-stamp-counter ()
   `(with-inline-assembly-case ()




More information about the Movitz-cvs mailing list