[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