[movitz-cvs] CVS update: movitz/losp/muerte/defstruct.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Thu Oct 21 20:34:02 UTC 2004
Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv3419
Modified Files:
defstruct.lisp
Log Message:
Improve accessors to observe
*compiler-nonlocal-lispval-read/write-segment-prefix* more. Also
don't use the movitz-accessor etc. macros anymore, use memref and
movitz-type-slot-offset instead.
Date: Thu Oct 21 22:34:02 2004
Author: ffjeld
Index: movitz/losp/muerte/defstruct.lisp
diff -u movitz/losp/muerte/defstruct.lisp:1.15 movitz/losp/muerte/defstruct.lisp:1.16
--- movitz/losp/muerte/defstruct.lisp:1.15 Mon Oct 11 15:52:27 2004
+++ movitz/losp/muerte/defstruct.lisp Thu Oct 21 22:34:02 2004
@@ -9,7 +9,7 @@
;;;; Created at: Mon Jan 22 13:10:59 2001
;;;; Distribution: See the accompanying file COPYING.
;;;;
-;;;; $Id: defstruct.lisp,v 1.15 2004/10/11 13:52:27 ffjeld Exp $
+;;;; $Id: defstruct.lisp,v 1.16 2004/10/21 20:34:02 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -56,12 +56,13 @@
(:jne '(:sub-program (type-error) (:int 66)))
;; type test passed, read slot
,@(if (= 4 movitz::+movitz-fixnum-factor+)
- `((:compile-form (:result-mode :ebx) slot-number)
- (:movl (:eax :ebx (:offset movitz-struct slot0))
+ `((:compile-form (:result-mode :ecx) slot-number)
+ (#.movitz:*compiler-nonlocal-lispval-read-segment-prefix*
+ :movl (:eax :ecx (:offset movitz-struct slot0))
:eax))
`((:compile-form (:result-mode :untagged-fixnum-ecx) slot-number)
- (:movl (:eax (:ecx 4) (:offset movitz-struct slot0))
- :eax))))))
+ (#.movitz:*compiler-nonlocal-lispval-read-segment-prefix*
+ :movl (:eax (:ecx 4) (:offset movitz-struct slot0)) :eax))))))
(do-it)))
(defun (setf structure-ref) (value object slot-number)
@@ -83,7 +84,8 @@
(:jae '(:sub-program (out-of-range) (:int 65)))
;; type test passed, write slot
(:compile-form (:result-mode :edx) value)
- (:movl :edx (:eax :ebx (:offset movitz-struct slot0))))))
+ (#.movitz:*compiler-nonlocal-lispval-write-segment-prefix*
+ :movl :edx (:eax :ebx (:offset movitz-struct slot0))))))
(do-it)))
(defun struct-accessor-prototype (object)
@@ -101,8 +103,9 @@
;;; (:jne '(:sub-program (type-error) (:int 66)))
;; type test passed, read slot
(:load-constant slot-number :ecx)
- (:shrl #.movitz::+movitz-fixnum-shift+ :ecx)
- (:movl (:eax (:ecx 4) #.(bt:slot-offset 'movitz::movitz-struct 'movitz::slot0))
+;;; (:shrl #.movitz::+movitz-fixnum-shift+ :ecx)
+ (#.movitz:*compiler-nonlocal-lispval-read-segment-prefix*
+ :movl (:eax (:ecx 1) #.(bt:slot-offset 'movitz::movitz-struct 'movitz::slot0))
:eax)))
(defun (setf struct-accessor-prototype) (value obj)
@@ -120,8 +123,9 @@
;;; (:jne '(:sub-program (type-error) (:int 66)))
;; type test passed, write slot
(:load-constant slot-number :ecx)
- (:shrl #.movitz::+movitz-fixnum-shift+ :ecx)
- (:movl :eax (:ebx (:ecx 4) #.(bt:slot-offset 'movitz::movitz-struct 'movitz::slot0)))))
+;;; (:shrl #.movitz::+movitz-fixnum-shift+ :ecx)
+ (#.movitz:*compiler-nonlocal-lispval-write-segment-prefix*
+ :movl :eax (:ebx (:ecx 1) #.(bt:slot-offset 'movitz::movitz-struct 'movitz::slot0)))))
(defun list-struct-accessor-prototype (s)
(nth 'slot-number s))
More information about the Movitz-cvs
mailing list