Update of /project/movitz/cvsroot/movitz In directory common-lisp.net:/tmp/cvs-serv21687
Modified Files: compiler.lisp Log Message: Re-arranged many details about *movitz-nil*, movitz-null, and how it relates to the cons and symbol binary-classes etc. This should now be slightly less messy, and slightly more efficient.
Date: Wed Jul 28 17:12:54 2004 Author: ffjeld
Index: movitz/compiler.lisp diff -u movitz/compiler.lisp:1.86 movitz/compiler.lisp:1.87 --- movitz/compiler.lisp:1.86 Wed Jul 28 03:00:20 2004 +++ movitz/compiler.lisp Wed Jul 28 17:12:54 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.86 2004/07/28 10:00:20 ffjeld Exp $ +;;;; $Id: compiler.lisp,v 1.87 2004/07/29 00:12:54 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -3679,7 +3679,7 @@ (case op (:movl (etypecase movitz-obj - (movitz-nil + (movitz-null (ecase (result-mode-type result-mode) (:lexical-binding (make-store-lexical result-mode :edi nil frame-map)) @@ -4369,7 +4369,7 @@ ,optional-ok-label))))) (when rest-var (let* ((rest-binding (movitz-binding rest-var env)) - (rest-position (function-argument-argnum rest-binding))) + #+ignore (rest-position (function-argument-argnum rest-binding))) #+ignore (assert (or (typep rest-binding 'hidden-rest-function-argument) (movitz-env-get rest-var 'dynamic-extent nil env)) @@ -4377,8 +4377,7 @@ "&REST variable ~S must be dynamic-extent." rest-var) ;; (setq need-normalized-ecx-p t) (append #+ignore (make-immediate-move rest-position :edx) - `(#+ignore - (:call (:edi ,(global-constant-offset 'restify-dynamic-extent))) + `(#+ignore (:call (:edi ,(global-constant-offset 'restify-dynamic-extent))) (:init-lexvar ,rest-binding :init-with-register :eax :init-with-type list))))) @@ -4796,8 +4795,8 @@ (t (error "Don't know ECX mode ~S." returns-provided))))) (:boolean-cf=1 (values (append code - `((:sbbl :ecx :ecx) - (:movl (:edi (:ecx 4) ,(global-constant-offset 'null-cons)) + `((:sbbl :ecx :ecx) ; T => -1, NIL => 0 + (:movl (:edi (:ecx 4) ,(global-constant-offset 'not-not-nil)) :eax))) :eax)) (#.+boolean-modes+ @@ -5632,7 +5631,7 @@ (if (eq movitz-obj (image-t-symbol *image*)) (make-indirect-reference :edi (global-constant-offset 't-symbol)) (etypecase movitz-obj - (movitz-nil :edi) + (movitz-null :edi) (movitz-immediate-object (movitz-immediate-value movitz-obj)) (movitz-heap-object (make-indirect-reference :esi (movitz-funobj-intern-constant funobj movitz-obj)))))))