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@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 ,@format-arguments) ,@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)