[movitz-cvs] CVS update: movitz/losp/muerte/los-closette.lisp

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Thu Oct 21 20:34:07 UTC 2004


Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv3453

Modified Files:
	los-closette.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:06 2004
Author: ffjeld

Index: movitz/losp/muerte/los-closette.lisp
diff -u movitz/losp/muerte/los-closette.lisp:1.21 movitz/losp/muerte/los-closette.lisp:1.22
--- movitz/losp/muerte/los-closette.lisp:1.21	Sat Sep 25 17:38:47 2004
+++ movitz/losp/muerte/los-closette.lisp	Thu Oct 21 22:34:06 2004
@@ -10,7 +10,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Tue Jul 23 14:29:10 2002
 ;;;;                
-;;;; $Id: los-closette.lisp,v 1.21 2004/09/25 15:38:47 ffjeld Exp $
+;;;; $Id: los-closette.lisp,v 1.22 2004/10/21 20:34:06 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -150,37 +150,40 @@
 
 (defun std-gf-instance-class (instance)
   (check-type instance standard-gf-instance)
-  (movitz-accessor instance movitz-funobj-standard-gf standard-gf-class))
+  (memref instance (movitz-type-slot-offset 'movitz-funobj-standard-gf 'standard-gf-class))
+  #+ignore (movitz-accessor instance movitz-funobj-standard-gf standard-gf-class))
 
 (defun std-gf-instance-slots (instance)
   (check-type instance standard-gf-instance)
-  (movitz-accessor instance movitz-funobj-standard-gf standard-gf-slots))
+  (memref instance (movitz-type-slot-offset 'movitz-funobj-standard-gf 'standard-gf-slots)))
+
+(define-compiler-macro std-gf-num-required-arguments (instance)
+  `(memref ,instance (movitz-type-slot-offset 'movitz-funobj-standard-gf 'num-required-arguments)))
 
 (defun std-gf-num-required-arguments (instance)
   (check-type instance standard-gf-instance)
-  (movitz-accessor instance movitz-funobj-standard-gf num-required-arguments))
-
-(define-compiler-macro std-gf-num-required-arguments (instance)
-  `(movitz-accessor ,instance movitz-funobj-standard-gf num-required-arguments))
+  (memref instance (movitz-type-slot-offset 'movitz-funobj-standard-gf 'num-required-arguments)))
 
 (defun std-gf-classes-to-emf-table (instance)
   (check-type instance standard-gf-instance)
-  (movitz-accessor instance movitz-funobj-standard-gf classes-to-emf-table))
+  (memref instance (movitz-type-slot-offset 'movitz-funobj-standard-gf 'classes-to-emf-table)))
 
 (define-compiler-macro std-gf-classes-to-emf-table (instance)
-  `(movitz-accessor ,instance movitz-funobj-standard-gf classes-to-emf-table))
+  `(memref ,instance (movitz-type-slot-offset 'movitz-funobj-standard-gf 'classes-to-emf-table)))
 
 (defun (setf std-gf-classes-to-emf-table) (value instance)
   (check-type instance standard-gf-instance)
-  (setf-movitz-accessor (instance movitz-funobj-standard-gf classes-to-emf-table) value))
+  (setf (memref instance (movitz-type-slot-offset 'movitz-funobj-standard-gf 'classes-to-emf-table))
+    value))
 
 (defun std-gf-eql-specializer-table (instance)
   (check-type instance standard-gf-instance)
-  (movitz-accessor instance movitz-funobj-standard-gf eql-specializer-table))
+  (memref instance (movitz-type-slot-offset 'movitz-funobj-standard-gf 'eql-specializer-table)))
 
 (defun (setf std-gf-eql-specializer-table) (value instance)
   (check-type instance standard-gf-instance)
-  (setf-movitz-accessor (instance movitz-funobj-standard-gf eql-specializer-table) value))
+  (setf (memref instance (movitz-type-slot-offset 'movitz-funobj-standard-gf 'eql-specializer-table))
+    value))
 
 (defun set-funcallable-instance-function (funcallable-instance function)
   "This function is called to set or to change the function of a funcallable instance.
@@ -188,13 +191,17 @@
 funcallable-instance will run the new function."
   (check-type funcallable-instance standard-gf-instance)
   (check-type function function)
-  (setf-movitz-accessor (funcallable-instance movitz-funobj-standard-gf standard-gf-function)
-			function)
+  (setf (memref funcallable-instance (movitz-type-slot-offset 'movitz-funobj-standard-gf
+							      'standard-gf-function))
+    function)
+;;;  (setf-movitz-accessor (funcallable-instance movitz-funobj-standard-gf standard-gf-function)
+;;;			function)
   (values))
 
 (defun funcallable-instance-function (funcallable-instance)
   (check-type funcallable-instance standard-gf-instance)
-  (movitz-accessor funcallable-instance movitz-funobj-standard-gf standard-gf-function))
+  (memref funcallable-instance (movitz-type-slot-offset 'movitz-funobj-standard-gf
+							'standard-gf-function)))
 
 (defun instance-slot-p (slot)
   (eq (slot-definition-allocation slot) :instance))
@@ -868,12 +875,13 @@
   `(defun ,name (instance)
      (with-inline-assembly (:returns :multiple-values)
        (:compile-form (:result-mode :eax) instance)
-       (:movl (:eax ,(bt:slot-offset 'movitz::movitz-std-instance 'movitz::slots))
-	      :eax)
-       (:movl (:eax ,(+ (bt:slot-offset 'movitz::movitz-basic-vector 'movitz::data)
-			(* location 4)))
+       (#.movitz:*compiler-nonlocal-lispval-read-segment-prefix*
+	:movl (:eax (:offset movitz-std-instance slots))
 	      :eax)
-       (:cmpl :eax ,(movitz::make-indirect-reference :edi (movitz::global-constant-offset 'unbound-value)))
+       (#.movitz:*compiler-nonlocal-lispval-read-segment-prefix*
+	:movl (:eax (:offset movitz-basic-vector data ,(* location 4))) :eax)
+       (#.movitz:*compiler-global-segment-prefix*
+	:cmpl :eax ,(movitz::make-indirect-reference :edi (movitz::global-constant-offset 'unbound-value)))
        (:je '(:sub-program (unbound)
 	      (:compile-form (:result-mode :multiple-values) (slot-unbound-trampoline instance ,location))
 	      (:jmp 'done)))
@@ -968,7 +976,7 @@
 (defclass sequence (t) () (:metaclass built-in-class))
 (defclass array (t) () (:metaclass built-in-class))
 (defclass character (t) () (:metaclass built-in-class))
-;; (defclass hash-table (t) () (:metaclass built-in-class))
+;;;(defclass hash-table (t) () (:metaclass built-in-class))
 ;;;(defclass package (t) () (:metaclass built-in-class))
 ;;;(defclass pathname (t) () (:metaclass built-in-class))
 ;;;(defclass readtable (t) () (:metaclass built-in-class))





More information about the Movitz-cvs mailing list