[Openmcl-cvs-notifications] r15282 - /trunk/source/compiler/nx1.lisp
gb at clozure.com
gb at clozure.com
Wed Mar 28 15:56:54 CDT 2012
Author: gb
Date: Wed Mar 28 15:56:53 2012
New Revision: 15282
Log:
Check for undefined functions while processing (FUNCTION <symbol>),
not while processing calls to a function used to implement that
(those calls may be effectively NOTINLINE.)
Fixes ticket:929.
Modified:
trunk/source/compiler/nx1.lisp
Modified: trunk/source/compiler/nx1.lisp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/compiler/nx1.lisp (original)
+++ trunk/source/compiler/nx1.lisp Wed Mar 28 15:56:53 2012
@@ -1426,6 +1426,11 @@
(progn
(while (setq fn (assq arg *nx-synonyms*))
(setq arg (%cdr fn)))
+ (let* ((env *nx-lexical-environment*))
+ (unless (or (nx1-find-call-def arg env)
+ (find-ftype-decl arg env)
+ (eq arg *nx-global-function-name*))
+ (nx1-whine :undefined-function arg)))
(nx1-form context `(%function ',arg)))))
((setf-function-name-p arg)
(nx1-form context `(function ,(nx-need-function-name arg))))
@@ -1474,12 +1479,7 @@
(if (and (eq (car sym) (%nx1-operator immediate))
(setq symbol (cadr sym))
(symbolp symbol))
- (let ((env *nx-lexical-environment*))
- (unless (or (nx1-find-call-def symbol env)
- (find-ftype-decl symbol env)
- (eq symbol *nx-global-function-name*))
- (nx1-whine :undefined-function symbol))
- (make-acode (%nx1-default-operator) symbol))
+ (make-acode (%nx1-default-operator) symbol)
(make-acode (%nx1-operator call) (nx1-immediate context '%function) =
(list nil (list sym))))))
=
(defnx1 nx1-tagbody tagbody context (&rest args)
More information about the Openmcl-cvs-notifications
mailing list