Fix DEFINE-COMPILER-MACRO behavior: supersedes regular macros on compile time unless NOTINLINE.

This commit is contained in:
goffioul 2005-10-27 13:17:49 +00:00
parent 91643a7c13
commit 031a2edb76
2 changed files with 10 additions and 2 deletions

View file

@ -55,14 +55,15 @@
((and (setq fd (get-sysprop fname 'C1CONDITIONAL))
(inline-possible fname)
(funcall fd args)))
((setq fd (macro-function fname))
(c1expr (cmp-expand-macro fd fname args)))
((and (setq fd (compiler-macro-function fname))
(inline-possible fname)
(let ((success nil))
(multiple-value-setq (fd success)
(cmp-expand-compiler-macro fd fname args))
success))
(c1expr fd))
((setq fd (macro-function fname))
(c1expr (cmp-expand-macro fd fname args)))
((and (setq fd (get-sysprop fname 'SYS::STRUCTURE-ACCESS))
(inline-possible fname)
;;; Structure hack.

View file

@ -40,6 +40,13 @@
((setq fd (get-sysprop fun 'T1))
(funcall fd args))
((get-sysprop fun 'C1) (t1ordinary form))
((and (setq fd (compiler-macro-function fun))
(inline-possible fun)
(let ((success nil))
(multiple-value-setq (fd success)
(cmp-expand-compiler-macro fd fun args))
success))
(t1expr* fd))
((setq fd (macro-function fun))
(t1expr* (cmp-expand-macro fd fun (cdr form))))
((and (setq fd (assoc fun *funs*))