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

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Mon Mar 22 16:38:05 UTC 2004


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

Modified Files:
	functions.lisp 
Log Message:
A small change in strategy for allocating memory.

Date: Mon Mar 22 11:38:05 2004
Author: ffjeld

Index: movitz/losp/muerte/functions.lisp
diff -u movitz/losp/muerte/functions.lisp:1.2 movitz/losp/muerte/functions.lisp:1.3
--- movitz/losp/muerte/functions.lisp:1.2	Mon Jan 19 06:23:46 2004
+++ movitz/losp/muerte/functions.lisp	Mon Mar 22 11:38:05 2004
@@ -10,7 +10,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Tue Mar 12 22:58:54 2002
 ;;;;                
-;;;; $Id: functions.lisp,v 1.2 2004/01/19 11:23:46 ffjeld Exp $
+;;;; $Id: functions.lisp,v 1.3 2004/03/22 16:38:05 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -265,12 +265,16 @@
 
 (defun funobj-num-jumpers (funobj)
   (check-type funobj compiled-function)
-  (movitz-accessor-u16 funobj movitz-funobj num-jumpers))
+  (with-inline-assembly (:returns :eax)
+    (:compile-form (:result-mode :eax) funobj)
+    (:movzxw (:eax #.(bt:slot-offset 'movitz:movitz-funobj 'movitz::num-jumpers)) :eax)))
 
 (defun (setf funobj-num-jumpers) (num-jumpers funobj)
   (check-type funobj compiled-function)
-  (check-type num-jumpers (unsigned-byte 16))
-  (set-movitz-accessor-u16 funobj movitz-funobj num-jumpers num-jumpers))
+  (check-type num-jumpers (unsigned-byte 14))
+  (with-inline-assembly (:returns :eax)
+    (:compile-two-forms (:eax :ebx) num-jumpers funobj)
+    (:movw :ax (:ebx #.(bt:slot-offset 'movitz:movitz-funobj 'movitz::num-jumpers)))))
 
 (defun funobj-constant-ref (funobj index)
   (check-type funobj compiled-function)
@@ -333,9 +337,10 @@
        (make-array (length code-vector)
 		   :element-type 'u8
 		   :initial-contents code-vector))))
-  (let ((funobj (inline-malloc (+ #.(bt:sizeof 'movitz:movitz-funobj)
-				  (* 4 (length constants)))
-			       :other-tag :funobj)))
+  (let ((funobj (malloc-words (+ #.(cl:truncate (bt:sizeof 'movitz:movitz-funobj) 4)
+				 (length constants)))))
+    (setf (memref funobj #.(bt:slot-offset 'movitz:movitz-funobj 'movitz:type) 0 :unsigned-byte16)
+      #.(movitz:tag :funobj))
     (setf (funobj-name funobj) name
 	  (funobj-code-vector funobj) code-vector
 	  ;; revert to default trampolines for now..
@@ -376,9 +381,10 @@
 
 (defun copy-funobj (old-funobj &optional (name (funobj-name old-funobj)))
   (let* ((num-constants (funobj-num-constants old-funobj))
-	 (funobj (inline-malloc (+ #.(bt:sizeof 'movitz:movitz-funobj)
-				   (* 4 num-constants))
-				:other-tag :funobj)))
+	 (funobj (malloc-words (+ #.(cl:truncate (bt:sizeof 'movitz:movitz-funobj) 4)
+				  num-constants))))
+    (setf (memref funobj #.(bt:slot-offset 'movitz:movitz-funobj 'movitz:type) 0 :unsigned-byte16)
+      (memref old-funobj #.(bt:slot-offset 'movitz:movitz-funobj 'movitz:type) 0 :unsigned-byte16))
     (setf (funobj-num-constants funobj) num-constants)
     (replace-funobj funobj old-funobj name)))
 





More information about the Movitz-cvs mailing list