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

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Wed Apr 7 00:15:06 UTC 2004


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

Modified Files:
	memref.lisp 
Log Message:
Improve memref a bit more.

Date: Tue Apr  6 20:15:05 2004
Author: ffjeld

Index: movitz/losp/muerte/memref.lisp
diff -u movitz/losp/muerte/memref.lisp:1.10 movitz/losp/muerte/memref.lisp:1.11
--- movitz/losp/muerte/memref.lisp:1.10	Tue Apr  6 10:25:44 2004
+++ movitz/losp/muerte/memref.lisp	Tue Apr  6 20:15:02 2004
@@ -10,7 +10,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Tue Mar  6 21:25:49 2001
 ;;;;                
-;;;; $Id: memref.lisp,v 1.10 2004/04/06 14:25:44 ffjeld Exp $
+;;;; $Id: memref.lisp,v 1.11 2004/04/07 00:15:02 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -182,15 +182,19 @@
 			    (:jg '(:sub-program () (:int 4)))))))))
 		(:lisp
 		 (cond
-		  ((and (eq 0 index) (eq 0 offset))
+		  ((and (eql 0 index) (eql 0 offset))
 		   `(with-inline-assembly (:returns :register)
 		      (:compile-form (:result-mode :register) ,object)
 		      (:movl ((:result-register) ,(offset-by 4)) (:result-register))))
-		  ((eq 0 offset)
+		  ((eql 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)))
+		  ((eql 0 index)
+		   `(with-inline-assembly (:returns :eax)
+		      (:compile-two-forms (:eax :untagged-fixnum-ecx) ,object ,offset)
 		      (:movl (:eax :ecx ,(offset-by 4)) :eax)))
 		  (t (assert (not (movitz:movitz-constantp offset env)))
 		     (assert (not (movitz:movitz-constantp index env)))





More information about the Movitz-cvs mailing list