0.pre7.20:
[sbcl.git] / src / compiler / target-main.lisp
index d29ce80..673c998 100644 (file)
@@ -57,7 +57,6 @@
             (form `#',(get-lambda-to-compile definition))
             (*source-info* (make-lisp-source-info form))
             (*top-level-lambdas* ())
-            (*converting-for-interpreter* nil)
             (*block-compile* nil)
             (*compiler-error-bailout*
              #'(lambda ()
   to a compiled function, returning (VALUES THING WARNINGS-P FAILURE-P),
   where if NAME is NIL, THING is the result of compilation, and
   otherwise THING is NAME. When NAME is not NIL, the compiled function
-  is also set into (FDEFINITION NAME)."
-  ;;(format t "~&/in COMPILE NAME=~S DEFINITION=~S" name definition) ; REMOVEME
+  is also set into (MACRO-FUNCTION NAME) if NAME names a macro, or into
+  (FDEFINITION NAME) otherwise."
   (multiple-value-bind (compiled-definition warnings-p failure-p)
       (if (compiled-function-p definition)
          (values definition nil nil)
          (actually-compile name definition))
-    ;;(format t "~&/COMPILED-DEFINITION=~S~%" compiled-definition) ; REMOVEME
     (cond (name
-          (unless failure-p
-            (setf (fdefinition name) compiled-definition))
+          (if (macro-function name)
+              (setf (macro-function name) compiled-definition)
+              (setf (fdefinition name) compiled-definition))
           (values name warnings-p failure-p))
          (t
           (values compiled-definition warnings-p failure-p)))))