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

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Fri Jan 21 22:06:09 UTC 2005


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

Modified Files:
	compiler.lisp 
Log Message:
Fixed compute-call-extra-prefix whose previous incarnation I _really_
didn't understand (what was I thinking??)

Date: Fri Jan 21 14:06:08 2005
Author: ffjeld

Index: movitz/compiler.lisp
diff -u movitz/compiler.lisp:1.128 movitz/compiler.lisp:1.129
--- movitz/compiler.lisp:1.128	Mon Jan 10 00:18:49 2005
+++ movitz/compiler.lisp	Fri Jan 21 14:06:07 2005
@@ -8,7 +8,7 @@
 ;;;; Created at:    Wed Oct 25 12:30:49 2000
 ;;;; Distribution:  See the accompanying file COPYING.
 ;;;;                
-;;;; $Id: compiler.lisp,v 1.128 2005/01/10 08:18:49 ffjeld Exp $
+;;;; $Id: compiler.lisp,v 1.129 2005/01/21 22:06:07 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -34,7 +34,7 @@
   "Make every compiled function check upon entry that the
 stack-pointer is within bounds. Costs 3 code-bytes and a few cycles.")
 
-(defvar *compiler-allow-transients* t
+(defvar *compiler-allow-transients* nil
   "Allow the compiler to keep function arguments solely in registers.
 Hurst debugging, improves performance.")
 
@@ -117,22 +117,19 @@
 				  (+ (ia-x86::assemble-env-current-pc env)
 				     size))))
     (cond
-     ((not (and (ia-x86::instruction-operands instr)
-		(typep (car (ia-x86::instruction-operands instr))
-		       'ia-x86::operand-indirect-register)
-		(eq 'ia-x86::esi
-		    (ia-x86::operand-register (car (ia-x86::instruction-operands instr))))))
+     ((not (typep instr 'ia-x86-instr::call))
       nil)
      ((or (= (tag :even-fixnum) return-pointer-tag)
 	  (= (tag :odd-fixnum) return-pointer-tag))
       ;; Insert a NOP
       '(#x90))
-     ((= 3 return-pointer-tag)
-      ;; Insert two NOPs, 3 -> 5
-      '(#x90 #x90))
+;;;     ((= 3 return-pointer-tag)
+;;;      ;; Insert two NOPs, 3 -> 5
+;;;      '(#x90 #x90))
      ((= (tag :character) return-pointer-tag)
       ;; Insert three NOPs, 2 -> 5
-      '(#x90 #x90 #x90)))))
+      '(#x90 #x90 #x90)
+      '(#x90)))))
 
 (defun make-compiled-primitive (form environment top-level-p docstring)
   "Primitive functions have no funobj, no stack-frame, and no implied
@@ -3858,6 +3855,7 @@
 			(append (make-load-constant sub-funobj register funobj frame-map)))
 		       ((typep (movitz-allocation sub-funobj)
 			       'with-dynamic-extent-scope-env)
+			(setf (headers-on-stack-frame-p funobj) t)
 			(let ((dynamic-scope (movitz-allocation sub-funobj)))
 			  (append (make-load-lexical (base-binding dynamic-scope) :edx
 						     funobj nil frame-map)




More information about the Movitz-cvs mailing list