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

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Mon Apr 19 19:49:11 UTC 2004


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

Modified Files:
	primitive-functions.lisp 
Log Message:
Fixed fast-class-of-null and fast-class-of-character so that they
actually do what they're supposed to do.

Date: Mon Apr 19 15:49:11 2004
Author: ffjeld

Index: movitz/losp/muerte/primitive-functions.lisp
diff -u movitz/losp/muerte/primitive-functions.lisp:1.14 movitz/losp/muerte/primitive-functions.lisp:1.15
--- movitz/losp/muerte/primitive-functions.lisp:1.14	Mon Apr 19 11:06:38 2004
+++ movitz/losp/muerte/primitive-functions.lisp	Mon Apr 19 15:49:11 2004
@@ -10,7 +10,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Tue Oct  2 21:02:18 2001
 ;;;;                
-;;;; $Id: primitive-functions.lisp,v 1.14 2004/04/19 15:06:38 ffjeld Exp $
+;;;; $Id: primitive-functions.lisp,v 1.15 2004/04/19 19:49:11 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -561,8 +561,12 @@
 (define-primitive-function fast-class-of-character ()
   "Return the class of a character object."
   (with-inline-assembly (:returns :multiple-values)
-    (:globally (:movl (:edi (:edi-offset classes)) :eax))
-    (:movl (:eax #.(movitz::class-object-offset 'character)) :eax)
+    (:globally (:movl (:edi (:edi-offset classes)) :ebx))
+    (:cmpb #.(movitz:tag :character) :al)
+    (:jne '(:sub-program ()
+	    (:globally (:movl (:edi (:edi-offset complicated-class-of)) :esi))
+	    (:jmp (:esi #.(bt:slot-offset 'movitz::movitz-funobj 'movitz::code-vector%1op)))))
+    (:movl (:ebx #.(movitz::class-object-offset 'character)) :eax)
     (:ret)))
 
 (define-primitive-function fast-class-of-null ()





More information about the Movitz-cvs mailing list