Update of /project/movitz/cvsroot/movitz/losp/muerte In directory common-lisp.net:/tmp/cvs-serv25089
Modified Files: memref.lisp Log Message: Remove the rather bogus :lisp-code-vector type.
Date: Tue Mar 30 04:36:50 2004 Author: ffjeld
Index: movitz/losp/muerte/memref.lisp diff -u movitz/losp/muerte/memref.lisp:1.4 movitz/losp/muerte/memref.lisp:1.5 --- movitz/losp/muerte/memref.lisp:1.4 Sun Mar 28 11:19:20 2004 +++ movitz/losp/muerte/memref.lisp Tue Mar 30 04:36:50 2004 @@ -10,7 +10,7 @@ ;;;; Author: Frode Vatvedt Fjeld frodef@acm.org ;;;; Created at: Tue Mar 6 21:25:49 2001 ;;;; -;;;; $Id: memref.lisp,v 1.4 2004/03/28 16:19:20 ffjeld Exp $ +;;;; $Id: memref.lisp,v 1.5 2004/03/30 09:36:50 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -151,32 +151,26 @@ (:popl :ecx) ; pop object (:sarl #.movitz::+movitz-fixnum-shift+ :ebx) ; scale offset+index (:movb (:ebx :ecx ,(offset-by 1)) :ah))))) - ((:lisp :lisp-code-vector) - (let ((fix-when-code-vector - (when (eq type :lisp-code-vector) - `((:subl ,movitz::+code-vector-word-offset+ :eax))))) - (cond - ((and (eq 0 index) (eq 0 offset)) - `(with-inline-assembly (:returns :eax) - (:compile-form (:result-mode :eax) ,object) - (:movl (:eax ,(offset-by 4)) :eax) - ,@fix-when-code-vector)) - ((eq 0 offset) - `(with-inline-assembly (:returns :eax) - (:compile-two-forms (:eax :ecx) ,object ,index) + (:lisp + (cond + ((and (eq 0 index) (eq 0 offset)) + `(with-inline-assembly (:returns :register) + (:compile-form (:result-mode :register) ,object) + (:movl ((:result-register) ,(offset-by 4)) (:result-register)))) + ((eq 0 offset) + `(with-inline-assembly (:returns :eax) + (:compile-two-forms (:eax :ecx) ,object ,index) + ,@(when (cl:plusp (cl:- movitz::+movitz-fixnum-shift+ 2)) + `((:sarl ,(cl:- movitz::+movitz-fixnum-shift+ 2)) :ecx)) + (:movl (:eax :ecx ,(offset-by 4)) :eax))) + (t `(with-inline-assembly (:returns :eax) + (:compile-form (:result-mode :push) ,object) + (:compile-two-forms (:untagged-fixnum-eax :ecx) ,offset ,index) ,@(when (cl:plusp (cl:- movitz::+movitz-fixnum-shift+ 2)) `((:sarl ,(cl:- movitz::+movitz-fixnum-shift+ 2)) :ecx)) - (:movl (:eax :ecx ,(offset-by 4)) :eax) - ,@fix-when-code-vector)) - (t `(with-inline-assembly (:returns :eax) - (:compile-form (:result-mode :push) ,object) - (:compile-two-forms (:untagged-fixnum-eax :ecx) ,offset ,index) - ,@(when (cl:plusp (cl:- movitz::+movitz-fixnum-shift+ 2)) - `((:sarl ,(cl:- movitz::+movitz-fixnum-shift+ 2)) :ecx)) - (:addl :ecx :eax) - (:popl :ebx) ; pop object - (:movl (:eax :ebx ,(offset-by 4)) :eax) - ,@fix-when-code-vector))))) + (:addl :ecx :eax) + (:popl :ebx) ; pop object + (:movl (:eax :ebx ,(offset-by 4)) :eax))))) (t (error "Unknown memref type: ~S" (movitz::eval-form type nil nil)) form)))))))))
@@ -187,7 +181,6 @@ (:unsigned-byte32 (memref object offset index :unsigned-byte32)) (:character (memref object offset index :character)) (:lisp (memref object offset index :lisp)) - (:lisp-code-vector (memref object offset index :lisp-code-vector)) (:signed-byte30+2 (memref object offset index :signed-byte30+2)) (:unsigned-byte29+3 (memref object offset index :unsigned-byte29+3))))