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

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Tue Jul 20 08:54:34 UTC 2004


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

Modified Files:
	more-macros.lisp 
Log Message:
Cleaned up most ":int 107" instances. Now, we mostly use the
semi-standardized ":int 64" which means that the value in EAX wasn't
integer. The default interrupt-handler understands this and signals
the appropriate error.

Date: Tue Jul 20 01:54:34 2004
Author: ffjeld

Index: movitz/losp/muerte/more-macros.lisp
diff -u movitz/losp/muerte/more-macros.lisp:1.14 movitz/losp/muerte/more-macros.lisp:1.15
--- movitz/losp/muerte/more-macros.lisp:1.14	Tue Jul 13 15:44:05 2004
+++ movitz/losp/muerte/more-macros.lisp	Tue Jul 20 01:54:34 2004
@@ -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.14 2004/07/13 22:44:05 ffjeld Exp $
+;;;; $Id: more-macros.lisp,v 1.15 2004/07/20 08:54:34 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -322,12 +322,31 @@
 			      ,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)
+		(equal context '(current-run-time-context))))
+      form
+    (let ((slot-name (movitz::eval-form slot-name env)))
+      (ecase (bt:binary-slot-type 'movitz::movitz-constant-block (intern (symbol-name slot-name) :movitz))
+	(movitz::word
+	 `(with-inline-assembly (:returns :eax)
+	    (:locally (:movl (:edi (:edi-offset ,slot-name)) :eax))))
+	(movitz::code-vector-word
+	 `(with-inline-assembly (:returns :eax)
+	    (:locally (:movl (:edi (:edi-offset ,slot-name)) :eax))
+	    (:subl ,movitz::+code-vector-word-offset+ :eax)))
+	(movitz::lu32
+	 `(with-inline-assembly (:returns :untagged-fixnum-ecx)
+	    (:locally (:movl (:edi (:edi-offset ,slot-name)) :ecx))))))))
+
 ;;; Some macros that aren't implemented, and we want to give compiler errors.
 
 (defmacro define-unimplemented-macro (name)
   `(defmacro ,name (&rest args)
      (declare (ignore args))
-     (error ,(format nil "Macro ~A is not implemented yet." name))))
+     (with-simple-restart (continue "Proceed with a NIL expansion for ~S." ',name)
+       (error "Macro ~S is not implemented yet." ',name))))
 
 (define-unimplemented-macro with-open-file)
 (define-unimplemented-macro restart-case)





More information about the Movitz-cvs mailing list