X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/284f1fa2ace3e276052ff1bd7d66442500e693da..d5fdd49e70b734b791eb907706f92da5775e2a8b:/doc/layout.tex diff --git a/doc/layout.tex b/doc/layout.tex index a807edf..458ceef 100644 --- a/doc/layout.tex +++ b/doc/layout.tex @@ -69,6 +69,13 @@ \end{describe} \begin{describe}{gf} + {find-class-initializer @ @ @> @} +\end{describe} + +\begin{describe}{gf}{find-slot-initargs @ @ @> @} +\end{describe} + +\begin{describe}{gf} {compute-effective-slot @ @ @> @} \end{describe} @@ -94,7 +101,7 @@ \begin{describe}{gf}{compute-islots @ @ @> @} \end{describe} -\begin{describe}{gf}{vtable-pointer () \&key :class :chain-head :chain-tail} +\begin{describe}{cls}{vtable-pointer () \&key :class :chain-head :chain-tail} \end{describe} \begin{describe*} @@ -103,20 +110,20 @@ \dhead{gf}{vtable-pointer-chain-tail @ @> @}} \end{describe*} -\begin{describe}{gf}{ichain () \&key :class :chain-head :chain-tail :body} +\begin{describe}{cls}{ichain () \&key :class :chain-head :chain-tail :body} \end{describe} \begin{describe*} {\dhead{gf}{ichain-class @ @> @} - \dhead{gf}{ichain-chain-head @ @> @} - \dhead{gf}{ichain-chain-tail @ @> @} + \dhead{gf}{ichain-head @ @> @} + \dhead{gf}{ichain-tail @ @> @} \dhead{gf}{ichain-body @ @> @}} \end{describe*} \begin{describe}{gf}{compute-ichain @ @ @> @} \end{describe} -\begin{describe}{gf}{ilayout () \&key :class :ichains} +\begin{describe}{cls}{ilayout () \&key :class :ichains} \end{describe} \begin{describe*} @@ -124,7 +131,7 @@ \dhead{gf}{ilayout-ichains @ @> @}} \end{describe*} -\begin{describe}{gf}{sod-class-ilayout @> @} +\begin{describe}{gf}{sod-class-ilayout @ @> @} \end{describe} \begin{describe}{gf}{compute-ilayout @ @> @} @@ -142,6 +149,11 @@ \dhead{gf}{vtmsgs-entries @ @> @}} \end{describe*} +\begin{describe}{gf} + {compute-vtmsgs @ @ @ @ + @> @} +\end{describe} + \begin{describe}{cls} {class-pointer () \&key :class :chain-head :metaclass :meta-chain-head} \end{describe} @@ -185,7 +197,7 @@ @> @} \end{describe} -\begin{describe}{gf}{vtable () \&key :class :chain-head :chain-tail :body} +\begin{describe}{cls}{vtable () \&key :class :chain-head :chain-tail :body} \end{describe} \begin{describe*} @@ -213,15 +225,41 @@ %%%-------------------------------------------------------------------------- \section{Method combination} \label{sec:layout.methods} -\begin{describe}{cls}{effective-method () \&key :message :class} +\begin{describe}{cls}{effective-method () \&key :message :class :keywords} \end{describe} \begin{describe*} {\dhead{gf}{effective-method-message @ @> @} - \dhead{gf}{effective-method-class @ @> @}} + \dhead{gf}{effective-method-class @ @> @} + \dhead{gf}{effective-method-keywords @ @> @}} \end{describe*} \begin{describe}{gf} + {sod-message-receiver-type @ @ @> @} +\end{describe} + +\begin{describe}{gf} + {sod-message-applicable-methods @ @ @> list} +\end{describe} + +\begin{describe}{gf} + {sod-message-keyword-argument-lists @ @ + @ @ + \nlret @} +\end{describe} + +\begin{describe}{fun} + {compute-effective-method-keyword-arguments @ + @ + @ + \nlret @} +\end{describe} + +\begin{describe}{gf} + {sod-message-check-methods @ @ @} +\end{describe} + +\begin{describe}{gf} {sod-message-effective-method-class @ @> @} \end{describe} @@ -258,21 +296,24 @@ \begin{describe}{gf}{sod-message-argument-tail @ @> @} \end{describe} -\begin{describe}{gf}{sod-message-no-varargs-tail @ @> @} -\end{describe} - \begin{describe}{gf}{sod-method-function-type @ @> @} \end{describe} \begin{describe}{gf}{sod-method-next-method-type @ @> @} \end{describe} +\begin{describe}{gf}{sod-method-description @ @> @} +\end{describe} + \begin{describe}{gf}{sod-method-function-name @ @> @} \end{describe} \begin{describe}{fun}{varargs-message-p @ @> @} \end{describe} +\begin{describe}{fun}{keyword-message-p @ @> @} +\end{describe} + \begin{describe}{gf}{method-entry-function-type @ @> @} \end{describe} @@ -287,10 +328,13 @@ {effective-method-basic-argument-names @ @> @} \end{describe} +\begin{describe}{gf} + {effective-method-live-p @ @> @} +\end{describe} \begin{describe}{cls} - {method-codegen (codegen) \\ \ind + {method-codegen (codegen) \\ \ind \&key :vars :insts :temp-index :message :class :method :target} \end{describe} @@ -306,9 +350,17 @@ {\dhead{cls}{convert-to-ilayout-inst (inst)} \dhead{fun} {make-convert-to-ilayout-inst @ @ @}} + \def\makelabels#1#2{% + #1{gf}{inst-class}[#2]#1{gf}{inst-chain-head}[#2]% + \descindex{gf}{inst-expr}[#2]% + } + \makelabels{\desclabel}{|(} + \begin{prog} SOD_ILAYOUT(@, @, @) \end{prog} + + \makelabels{\descindex}{|)} \end{describe*} @@ -361,17 +413,17 @@ \end{describe} \begin{describe}{cls} - {daemon-direct-method (basic-direct-method) \\ \ind + {daemon-direct-method (basic-direct-method) \\ \ind \&key :message :location :class :type :body :role} \end{describe} \begin{describe}{cls} - {delegating-direct-method (basic-direct-method) \\ \ind + {delegating-direct-method (basic-direct-method) \\ \ind \&key :message :location :class :type :body :role} \end{describe} \begin{describe}{cls} - {basic-effective-method (effective-method) \\ \ind + {basic-effective-method (effective-method) \\ \ind \&key :message :class :around-methods :before-methods :after-methods} \end{describe} @@ -386,7 +438,7 @@ \end{describe*} \begin{describe}{cls} - {simple-effective-method (basic-effective-method) \\ \ind + {simple-effective-method (basic-effective-method) \\ \ind \&key :message :class :around-methods :before-methods :after-methods :primary-methods} \end{describe} @@ -400,7 +452,7 @@ \end{describe} \begin{describe}{cls} - {standard-effective-method (simple-effective-method) \\ \ind + {standard-effective-method (simple-effective-method) \\ \ind \&key :message :class :around-methods :before-methods :after-methods :primary-methods} \end{describe} @@ -410,13 +462,18 @@ \&key :name :location :class :type :combination} \end{describe} +\begin{describe*} + {\dhead{gf}{sod-message-combination @ @> @} + \dhead{gf}{sod-message-kernel-function @ @> @}} +\end{describe*} + \begin{describe}{gf} {aggregating-message-properties @ @ @> @} \end{describe} \begin{describe}{gf} {compute-aggregating-message-kernel - \=@ @ @ \+ \\ + \=@ @ @ \+\\ @ @ \&key} \end{describe} @@ -425,21 +482,21 @@ \end{describe} \begin{describe}{cls} - {aggregating-effective-method (simple-effective-method) \\ \ind + {aggregating-effective-method (simple-effective-method) \\ \ind \&key :message :class :around-methods :before-methods :after-methods :primary-methods} \end{describe} \begin{describe}{mac} - {define-aggregating-method-combination @ \\ \ind\ind + {define-aggregating-method-combination @ \\ \ind\ind ((@^*) @[[ :codegen @ @! - :methods @ @]]) \- \\ + :methods @ @]]) \-\\ @[[ \=:properties (@{ (@{ @ @! (@[@@] @) @} @ @[@ - @[@@]@]) @}^*) @! \+ \\ - :return-type @ @! \\ + @[@@]@]) @}^*) @! \+\\ + :return-type @ @! \\ :around @ @! :first-method @ @! :method @ @]]}