[movitz-cvs] CVS update: movitz/compiler.lisp

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Tue Aug 10 12:56:13 UTC 2004


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

Modified Files:
	compiler.lisp 
Log Message:
Added variables *compiler-nonlocal-lispval-read-segment-prefix*
and *compiler-nonlocal-lispval-write-segment-prefix*, which are the
instruction prefixes the compiler should add when writing (potential)
pointer values to (potentially) nonlocal cells.

Also, changed make-compiled-primitive to also return the code-vectors
symtab.

Date: Tue Aug 10 05:56:12 2004
Author: ffjeld

Index: movitz/compiler.lisp
diff -u movitz/compiler.lisp:1.91 movitz/compiler.lisp:1.92
--- movitz/compiler.lisp:1.91	Mon Aug  9 07:39:31 2004
+++ movitz/compiler.lisp	Tue Aug 10 05:56:12 2004
@@ -8,7 +8,7 @@
 ;;;; Created at:    Wed Oct 25 12:30:49 2000
 ;;;; Distribution:  See the accompanying file COPYING.
 ;;;;                
-;;;; $Id: compiler.lisp,v 1.91 2004/08/09 14:39:31 ffjeld Exp $
+;;;; $Id: compiler.lisp,v 1.92 2004/08/10 12:56:12 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -45,8 +45,15 @@
 run-time context.")
 
 (defvar *compiler-physical-segment-prefix* '(:gs-override)
-  "Use this instruction prefix when accessing a physical memory location
-(i.e. typically some memory-mapped hardware device).")
+  "Use this instruction prefix when accessing a physical memory location (i.e. typically some memory-mapped hardware device).")
+
+(defvar *compiler-nonlocal-lispval-read-segment-prefix* '(:fs-override)
+  "Use this segment prefix when reading a lispval at (potentially)
+non-local locations.")
+
+(defvar *compiler-nonlocal-lispval-write-segment-prefix* '(:fs-override)
+  "Use this segment prefix when writing a lispval at (potentially)
+non-local locations.")
 
 (defvar *compiler-allow-untagged-word-bits* 0
   "Allow (temporary) untagged values of this bit-size to exist, because
@@ -102,18 +109,20 @@
 		      :result-mode :ignore))
 	 ;; (ignmore (format t "~{~S~%~}" body-code))
 	 (resolved-code (finalize-code body-code nil nil))
-	 (function-code (ia-x86:read-proglist resolved-code))
-	 (code-vector (ia-x86:proglist-encode :octet-vector
-					      :32-bit
-					      #x00000000
-					      function-code
-					      :symtab-lookup
-					      #'(lambda (label)
-						  (case label
-						    (:nil-value (image-nil-word *image*)))))))
-    (make-movitz-vector (length code-vector)
-			:element-type 'code
-			:initial-contents code-vector)))
+	 (function-code (ia-x86:read-proglist resolved-code)))
+    (multiple-value-bind (code-vector symtab)
+	(ia-x86:proglist-encode :octet-vector
+				:32-bit
+				#x00000000
+				function-code
+				:symtab-lookup
+				#'(lambda (label)
+				    (case label
+				      (:nil-value (image-nil-word *image*)))))
+      (values (make-movitz-vector (length code-vector)
+				  :element-type 'code
+				  :initial-contents code-vector)
+	      symtab))))
 
 (defun register-function-code-size (funobj)
   (let* ((name (movitz-print (movitz-funobj-name funobj)))





More information about the Movitz-cvs mailing list