Update of /project/movitz/cvsroot/movitz In directory clnet:/tmp/cvs-serv9168
Modified Files: compiler.lisp Log Message: Remove some dead code. Be more precise about when ECX can be used for temporary storage.
--- /project/movitz/cvsroot/movitz/compiler.lisp 2008/04/15 23:04:39 1.202 +++ /project/movitz/cvsroot/movitz/compiler.lisp 2008/04/17 19:09:28 1.203 @@ -8,7 +8,7 @@ ;;;; Created at: Wed Oct 25 12:30:49 2000 ;;;; Distribution: See the accompanying file COPYING. ;;;; -;;;; $Id: compiler.lisp,v 1.202 2008/04/15 23:04:39 ffjeld Exp $ +;;;; $Id: compiler.lisp,v 1.203 2008/04/17 19:09:28 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -1073,26 +1073,6 @@ :initial-contents code-vector))))) funobj)
-(defun check-locate-concistency (code-vector) - "The run-time function muerte::%find-code-vector sometimes needs to find a code-vector by -searching through the machine-code for an object header signature. This function is to -make sure that no machine code accidentally forms such a header signature." - (loop for x from 0 below (length code-vector) by 8 - do (when (and (= (tag :basic-vector) (aref code-vector x)) - (= (enum-value 'movitz-vector-element-type :code) (aref code-vector (1+ x))) - (or (<= #x4000 (length code-vector)) - (and (= (ldb (byte 8 0) (length code-vector)) - (aref code-vector (+ x 2))) - (= (ldb (byte 8 8) (length code-vector)) - (aref code-vector (+ x 3)))))) - (break "Code-vector (length ~D) can break %find-code-vector at ~D: #x~2,'0X~2,'0X ~2,'0X~2,'0X." - (length code-vector) x - (aref code-vector (+ x 0)) - (aref code-vector (+ x 1)) - (aref code-vector (+ x 2)) - (aref code-vector (+ x 3))))) - (values)) - (defun check-locate-concistency (code code-vector-length) "The run-time function muerte::%find-code-vector sometimes needs to find a code-vector by searching through the machine-code for an object header signature. This function is to @@ -3650,7 +3630,11 @@ (if (and nil (typep source 'constant-object-binding)) (make-load-constant (constant-object source) binding funobj frame-map) (let ((protect-registers (list* source protect-registers))) - (unless (or (eq source :untagged-fixnum-ecx)) ; test binding type! + (unless (or (eq source :untagged-fixnum-ecx) + (and (binding-store-type binding) + (multiple-value-call #'encoded-subtypep + (values-list (binding-store-type binding)) + (type-specifier-encode '(or integer character))))) (push :ecx protect-registers)) (cond ((eq :untagged-fixnum-ecx source)