Update of /project/movitz/cvsroot/movitz In directory common-lisp.net:/tmp/cvs-serv2318
Modified Files: special-operators.lisp Log Message: Added assembly-macro :offset.
Date: Fri Jul 16 18:49:23 2004 Author: ffjeld
Index: movitz/special-operators.lisp diff -u movitz/special-operators.lisp:1.28 movitz/special-operators.lisp:1.29 --- movitz/special-operators.lisp:1.28 Thu Jul 15 14:06:28 2004 +++ movitz/special-operators.lisp Fri Jul 16 18:49:23 2004 @@ -8,7 +8,7 @@ ;;;; Author: Frode Vatvedt Fjeld frodef@acm.org ;;;; Created at: Fri Nov 24 16:22:59 2000 ;;;; -;;;; $Id: special-operators.lisp,v 1.28 2004/07/15 21:06:28 ffjeld Exp $ +;;;; $Id: special-operators.lisp,v 1.29 2004/07/17 01:49:23 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -521,6 +521,16 @@ (setq side-effects t)) (setf modifies (modifies-union modifies sub-modifies)) sub-code)))) + (setf (assembly-macro-expander :offset amenv) + #'(lambda (expr) + (destructuring-bind (type slot &optional (extra 0)) + (cdr expr) + (let ((mtype (find-symbol (symbol-name type) :movitz)) + (mslot (find-symbol (symbol-name slot) :movitz))) + (assert mtype (mtype) "Type not a Movitz symbol: ~A" type) + (assert mslot (mslot) "Slot not a Movitz symbol: ~A" slot) + (list (+ (slot-offset mtype mslot) + (eval extra))))))) (setf (assembly-macro-expander :returns-mode amenv) #'(lambda (expr) (assert (= 1 (length expr)))