[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