[movitz-cvs] CVS update: movitz/special-operators-cl.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Tue Nov 23 16:12:34 UTC 2004
Update of /project/movitz/cvsroot/movitz
In directory common-lisp.net:/tmp/cvs-serv7727
Modified Files:
special-operators-cl.lisp
Log Message:
new-unbound-value
Date: Tue Nov 23 17:12:27 2004
Author: ffjeld
Index: movitz/special-operators-cl.lisp
diff -u movitz/special-operators-cl.lisp:1.37 movitz/special-operators-cl.lisp:1.38
--- movitz/special-operators-cl.lisp:1.37 Fri Nov 19 21:12:37 2004
+++ movitz/special-operators-cl.lisp Tue Nov 23 17:12:25 2004
@@ -9,7 +9,7 @@
;;;; Created at: Fri Nov 24 16:31:11 2000
;;;; Distribution: See the accompanying file COPYING.
;;;;
-;;;; $Id: special-operators-cl.lisp,v 1.37 2004/11/19 20:12:37 ffjeld Exp $
+;;;; $Id: special-operators-cl.lisp,v 1.38 2004/11/23 16:12:25 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -97,29 +97,36 @@
and do (incf (num-specials local-env))
;; lexical...
else collect
- (compiler-values-bind (&code init-code &functional-p functional-p
- &type type &returns init-register
- &final-form final-form)
- (compiler-call #'compile-form-to-register
- :env init-env
- :defaults all
- :form init-form
- :modify-accumulate let-modifies)
- ;; (warn "prod: ~S, type: ~S" prod type)
- (list var
- init-form
- init-code
- functional-p
- (let ((init-type (type-specifier-primary type)))
- (assert init-type ()
- "The init-form ~S yielded the empty primary type!" type)
- init-type)
- (case init-register
- (:non-local-exit :edi)
- (t init-register))
- final-form))
- and do (movitz-env-add-binding local-env (make-instance 'located-binding
- :name var)))))
+ (let ((binding (make-instance 'located-binding :name var)))
+ (movitz-env-add-binding local-env binding)
+ (compiler-values-bind (&code init-code &functional-p functional-p
+ &type type &returns init-register
+ &final-form final-form)
+ (compiler-call #'compile-form-to-register
+ :env init-env
+ :defaults all
+ :form init-form
+ :modify-accumulate let-modifies)
+;;; ;; (warn "prod: ~S, type: ~S" prod type)
+;;; (warn "var ~S init: ~S.." var init-form)
+;;; (print-code 'init
+;;; (compiler-call #'compile-form
+;;; :env init-env
+;;; :defaults all
+;;; :form init-form
+;;; :result-mode binding))
+ (list var
+ init-form
+ init-code
+ functional-p
+ (let ((init-type (type-specifier-primary type)))
+ (assert init-type ()
+ "The init-form ~S yielded the empty primary type!" type)
+ init-type)
+ (case init-register
+ (:non-local-exit :edi)
+ (t init-register))
+ final-form))))))
(setf (stack-used local-env)
(stack-used init-env))
(flet ((compile-body ()
@@ -834,7 +841,7 @@
;; catcher
(:locally (:pushl (:edi (:edi-offset dynamic-env))))
(:pushl ',label-set-name)
- (:locally (:pushl (:edi (:edi-offset unbound-value))))
+ (:locally (:pushl (:edi (:edi-offset unbound-function))))
(:pushl :ebp)
(:locally (:movl :esp (:edi (:edi-offset dynamic-env)))))
`((:init-lexvar ,save-esp-binding
@@ -1109,7 +1116,7 @@
(:je '(:sub-program (,zero-specials)
;; Insert dummy binding
(:pushl :edi) ; biding value
- (:globally (:pushl (:edi (:edi-offset unbound-value)))) ; [[ binding tag ]]
+ (:pushl :edi) ; scratch
(:pushl :edi) ; binding name
(:pushl :esp)
(:addl 4 :ecx)
@@ -1117,7 +1124,7 @@
,loop
(:cmpl :edi :ebx) ; (endp symbols)
(:je ',no-more-symbols) ; .. (go no-more-symbols)
- (:globally (:movl (:edi (:edi-offset unbound-value)) :edx))
+ (:globally (:movl (:edi (:edi-offset new-unbound-value)) :edx))
(:cmpl :edi :eax) ; (endp values)
(:je ',no-more-values) ; .. (go no-more-values)
(:movl (:eax -1) :edx)
@@ -1272,7 +1279,7 @@
,cleanup-entry
;; Now (?), modify unwind-protect dyn-env-entry to be normal continuation
- (:locally (:movl (:edi (:edi-offset unbound-value)) :edx))
+ (:locally (:movl (:edi (:edi-offset unbound-function)) :edx))
(:movl :edx (:esp 4)) ; not unwind-protect-tag
(:movl ',continue-label (:esp 8)) ; new jumper index
More information about the Movitz-cvs
mailing list