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

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Tue Jul 13 02:26:24 UTC 2004


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

Modified Files:
	basic-functions.lisp 
Log Message:
Changed the run-time-context slot num-values from being lu32 to being
a word (i.e. a fixnum).

Date: Mon Jul 12 19:26:24 2004
Author: ffjeld

Index: movitz/losp/muerte/basic-functions.lisp
diff -u movitz/losp/muerte/basic-functions.lisp:1.12 movitz/losp/muerte/basic-functions.lisp:1.13
--- movitz/losp/muerte/basic-functions.lisp:1.12	Sun Jul 11 16:03:18 2004
+++ movitz/losp/muerte/basic-functions.lisp	Mon Jul 12 19:26:24 2004
@@ -10,7 +10,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Tue Sep  4 18:41:57 2001
 ;;;;                
-;;;; $Id: basic-functions.lisp,v 1.12 2004/07/11 23:03:18 ffjeld Exp $
+;;;; $Id: basic-functions.lisp,v 1.13 2004/07/13 02:26:24 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -279,9 +279,10 @@
    (3 (x y z)
       (with-inline-assembly (:returns :multiple-values)
 	(:compile-two-forms (:eax :ebx) x y)
-	((:fs-override) :movl 1 (:edi #.(movitz::global-constant-offset 'num-values)))
-	(:compile-form (:result-mode :ecx) z)
-	((:fs-override) :movl :ecx (:edi #.(movitz::global-constant-offset 'values)))
+	((:fs-override) :movl #.movitz:+movitz-fixnum-factor+
+			(:edi #.(movitz::global-constant-offset 'num-values)))
+	(:compile-form (:result-mode :edx) z)
+	((:fs-override) :movl :edx (:edi #.(movitz::global-constant-offset 'values)))
 	(:movl 3 :ecx)
 	(:stc)))
    (t (&rest objects)
@@ -298,18 +299,19 @@
 	(:jz 'done)
 	(:subl 2 :ecx)
 	(:jc 'copy-done)
-	((:fs-override) :movl :ecx (:edi #.(movitz::global-constant-offset 'num-values)))
+	(:leal ((:ecx #.movitz::+movitz-fixnum-factor+)) :edx)
+	((:fs-override) :movl :edx (:edi #.(movitz::global-constant-offset 'num-values)))
 	(:pushl :eax)
 	(:xorl :eax :eax)
        copy-loop
 	(:movl (:ebp (:ecx 4) 4) :edx)
-	((:fs-override) :movl :edx (:edi (:eax 4) #.(movitz::global-constant-offset 'values)))
-	(:addl 1 :eax)
+	((:fs-override) :movl :edx (:edi (:eax 1) #.(movitz::global-constant-offset 'values)))
+	(:addl 4 :eax)
 	(:subl 1 :ecx)
 	(:jnc 'copy-loop)
+	(:leal (:eax #.(cl:- movitz:+movitz-fixnum-factor+)) :ecx)
 	(:popl :eax)
-	((:fs-override) :movl (:edi #.(movitz::global-constant-offset 'num-values))
-			:ecx)
+	(:shrl #.movitz:+movitz-fixnum-shift+ :ecx)
        copy-done
 	(:addl 2 :ecx)
 	(:jnz 'done)
@@ -333,7 +335,7 @@
 
 (define-compiler-macro object-location (object)
   "The location is the object's address divided by fixnum-factor."
-  `(with-inline-assembly (:returns :register)
+  `(with-inline-assembly (:returns :register :type fixnum)
      (:compile-form (:result-mode :register) ,object)
      (:andl ,(* -2 movitz::+movitz-fixnum-factor+) (:result-register))))
   





More information about the Movitz-cvs mailing list