[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Small enhancement for (Rainy Day) PCL under Allegro CL



We use the following addition to `env.lisp' on Allegro CL 3.1.4, Sun-3
and Sun-4.  I believe it works on other versions of ACL/ExCL, too.
The purpose is that COMPILE-FILE should print out messages while
compiling methods and classes.  It defines a wrapper around an
unexported, undocumented internal compiler function, so use on your
own risk.

-------------------- cut here and insert into `env.lisp' --------------------
;;; The compiler will now print progress messages when it is compiling
;;; a method or class definition.
;;;
#+ExCL
(progn

(defvar *old-compile-process-form*)

(defun pcl-process-form (form)
  (when (consp form)
    (case (first form)
      ((defmethod)
       (format t "; Compiling method ~$~S~^ ~~%" (name-of-defmethod form)))
      ((defclass)
       (format t "; Compiling class ~S~%" (second form)))))
  (funcall *old-compile-process-form* form))

(defun name-of-defmethod (defmethod-form)
  (multiple-value-bind (name qualifiers lambda-list body)
      (parse-defmethod (rest defmethod-form))
    (declare (ignore body))
    `(,name ,@qualifiers ,(specialized-lambda-list-specializers lambda-list))))

(eval-when (eval load)
  (unless (boundp '*old-compile-process-form*)
    (setq *old-compile-process-form* (symbol-function
 'compiler::compile-process-form))
    (setf (symbol-function 'compiler::compile-process-form)
 #'pcl-process-form)))

)
--
Simon Leinen.
simon@opal.cs.tu-berlin.de
simon%opal@db0tui6.bitnet
simon@tubopal.UUCP