diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet
index c51a6af..2e11891 100644
--- a/books/bookvol9.pamphlet
+++ b/books/bookvol9.pamphlet
@@ -6930,6 +6930,70 @@ $\rightarrow$
\end{chunk}
+\defun{compFunctorBody}{compFunctorBody}
+\calls{compFunctorBody}{bootStrapError}
+\calls{compFunctorBody}{compOrCroak}
+\uses{compFunctorBody}{/editfile}
+\usesdollar{compFunctorBody}{NRTaddForm}
+\usesdollar{compFunctorBody}{functorForm}
+\usesdollar{compFunctorBody}{bootStrapMode}
+\begin{chunk}{defun compFunctorBody}
+(defun |compFunctorBody| (form mode env parForm)
+ (declare (ignore parForm))
+ (let (tt)
+ (declare (special |$NRTaddForm| |$functorForm| |$bootStrapMode| /editfile))
+ (if |$bootStrapMode|
+ (list (|bootStrapError| |$functorForm| /editfile) mode env)
+ (progn
+ (setq tt (|compOrCroak| form mode env))
+ (if (and (pairp form) (member (qcar form) '(|add| capsule)))
+ tt
+ (progn
+ (setq |$NRTaddForm|
+ (if (and (pairp form) (eq (qcar form) '|SubDomain|)
+ (pairp (qcdr form)) (pairp (qcdr (qcdr form)))
+ (eq (qcdr (qcdr (qcdr form))) nil))
+ (qcar (qcdr form))
+ form))
+ tt))))))
+
+\end{chunk}
+
+\defun{reportOnFunctorCompilation}{reportOnFunctorCompilation}
+\calls{reportOnFunctorCompilation}{displayMissingFunctions}
+\calls{reportOnFunctorCompilation}{sayBrightly}
+\calls{reportOnFunctorCompilation}{displaySemanticErrors}
+\calls{reportOnFunctorCompilation}{displayWarnings}
+\calls{reportOnFunctorCompilation}{addStats}
+\calls{reportOnFunctorCompilation}{normalizeStatAndStringify}
+\usesdollar{reportOnFunctorCompilation}{op}
+\usesdollar{reportOnFunctorCompilation}{functorStats}
+\usesdollar{reportOnFunctorCompilation}{functionStats}
+\usesdollar{reportOnFunctorCompilation}{warningStack}
+\usesdollar{reportOnFunctorCompilation}{semanticErrorStack}
+\begin{chunk}{defun reportOnFunctorCompilation}
+(defun |reportOnFunctorCompilation| ()
+ (declare (special |$op| |$functorStats| |$functionStats|
+ |$warningStack| |$semanticErrorStack|))
+ (|displayMissingFunctions|)
+ (when |$semanticErrorStack| (|sayBrightly| " "))
+ (|displaySemanticErrors|)
+ (when |$warningStack| (|sayBrightly| " "))
+ (|displayWarnings|)
+ (setq |$functorStats| (|addStats| |$functorStats| |$functionStats|))
+ (|sayBrightly|
+ (cons '|%l|
+ (append (|bright| " Cumulative Statistics for Constructor")
+ (list |$op|))))
+ (|sayBrightly|
+ (cons " Time:"
+ (append (|bright| (|normalizeStatAndStringify| (second |$functorStats|)))
+ (list "seconds"))))
+ (|sayBrightly| " ")
+ '|done|)
+
+\end{chunk}
+
\section{Indirect called comp routines}
In the {\bf compExpression} function there is the code:
\begin{verbatim}
@@ -16086,6 +16150,7 @@ if \verb|$InteractiveMode| then use a null outputstream
\getchunk{defun compForm}
\getchunk{defun compForm1}
\getchunk{defun compForm2}
+\getchunk{defun compFunctorBody}
\getchunk{defun compHas}
\getchunk{defun compIf}
\getchunk{defun compileFileQuietly}
@@ -16413,6 +16478,7 @@ if \verb|$InteractiveMode| then use a null outputstream
\getchunk{defun recompile-lib-file-if-necessary}
\getchunk{defun /rf-1}
\getchunk{defun removeSuperfluousMapping}
+\getchunk{defun reportOnFunctorCompilation}
\getchunk{defun /RQ,LIB}
\getchunk{defun setDefOp}
diff --git a/changelog b/changelog
index 94461d6..38bf18b 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+20110528 tpd src/axiom-website/patches.html 20110528.01.tpd.patch
+20110528 tpd src/interp/define.lisp treeshake compiler
+20110528 tpd books/bookvol9 treeshake compiler
20110527 tpd src/axiom-website/patches.html 20110527.02.tpd.patch
20110527 tpd src/axiom-website/download.html add ubuntu
20110527 tpd src/axiom-website/patches.html 20110527.01.tpd.patch
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 435ab95..11cb988 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -3514,5 +3514,7 @@ In process, not yet released
Makefile.pamphlet VERSION = May 2011
20110527.02.tpd.patch
src/axiom-website/download.html add ubuntu
+20110528.01.tpd.patch
+books/bookvol9 treeshake compiler