[armedbear-cvs] r13526 - trunk/abcl/src/org/armedbear/lisp
ehuelsmann at common-lisp.net
ehuelsmann at common-lisp.net
Sun Aug 21 18:46:24 UTC 2011
Author: ehuelsmann
Date: Sun Aug 21 11:46:22 2011
New Revision: 13526
Log:
Factor out a function.
Modified:
trunk/abcl/src/org/armedbear/lisp/compiler-pass1.lisp
Modified: trunk/abcl/src/org/armedbear/lisp/compiler-pass1.lisp
==============================================================================
--- trunk/abcl/src/org/armedbear/lisp/compiler-pass1.lisp Sun Aug 21 07:06:31 2011 (r13525)
+++ trunk/abcl/src/org/armedbear/lisp/compiler-pass1.lisp Sun Aug 21 11:46:22 2011 (r13526)
@@ -1173,6 +1173,35 @@
"Dummy FUNCALL wrapper to force p1 not to optimize the call."
(apply fn args))
+(defun p1-variable-reference (var)
+ (let ((variable (find-visible-variable var)))
+ (when (null variable)
+ (unless (or (special-variable-p var)
+ (memq var *undefined-variables*))
+ (compiler-style-warn
+ "Undefined variable ~S assumed special" var)
+ (push var *undefined-variables*))
+ (setf variable (make-variable :name var :special-p t))
+ (push variable *visible-variables*))
+ (let ((ref (make-var-ref variable)))
+ (unless (variable-special-p variable)
+ (when (variable-ignore-p variable)
+ (compiler-style-warn
+ "Variable ~S is read even though it was declared to be ignored."
+ (variable-name variable)))
+ (push ref (variable-references variable))
+ (incf (variable-reads variable))
+ (cond
+ ((eq (variable-compiland variable) *current-compiland*)
+ (dformat t "p1: read ~S~%" var))
+ (t
+ (dformat t "p1: non-local read ~S variable-compiland = ~S current compiland = ~S~%"
+ var
+ (compiland-name (variable-compiland variable))
+ (compiland-name *current-compiland*))
+ (setf (variable-used-non-locally-p variable) t))))
+ ref)))
+
(defknown p1 (t) t)
(defun p1 (form)
(cond
@@ -1193,34 +1222,7 @@
(pathnamep value))))
(setf form value))
(t
- (let ((variable (find-visible-variable form)))
- (when (null variable)
- (unless (or (special-variable-p form)
- (memq form *undefined-variables*))
- (compiler-style-warn
- "Undefined variable ~S assumed special" form)
- (push form *undefined-variables*))
- (setf variable (make-variable :name form :special-p t))
- (push variable *visible-variables*))
- (let ((ref (make-var-ref variable)))
- (unless (variable-special-p variable)
- (when (variable-ignore-p variable)
- (compiler-style-warn
- "Variable ~S is read even though it was declared to be ignored."
- (variable-name variable)))
- (push ref (variable-references variable))
- (incf (variable-reads variable))
- (cond
- ((eq (variable-compiland variable) *current-compiland*)
- (dformat t "p1: read ~S~%" form))
- (t
- (dformat t "p1: non-local read ~S variable-compiland = ~S current compiland = ~S~%"
- form
- (compiland-name (variable-compiland variable))
- (compiland-name *current-compiland*))
- (setf (variable-used-non-locally-p variable) t))))
- (setf form ref)))
- form))))
+ (p1-variable-reference form)))))
((atom form)
form)
(t
More information about the armedbear-cvs
mailing list