X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/489173a51e3020f7e0f73208c92ba0a03e21e048..74bf1b29b8cef573908180e6ab00cfeb6f324b46:/doc/structures.tex diff --git a/doc/structures.tex b/doc/structures.tex index a36ae82..37ca9e3 100644 --- a/doc/structures.tex +++ b/doc/structures.tex @@ -410,7 +410,7 @@ and this is followed by corresponding members \end{prog} for each of $C$'s superclasses $A$ in the same chain in some (unimportant) order. The (somewhat obtuse) purpose of this union is to engage the `common -initial sequence' rule of \cite[6.5.2.3]{FIXME:C99}. +initial sequence' rule of \cite[6.5.2.3]{ISO:1990:IIP,ANSI:1999:AII}. \subsubsection{The ichain structure} The @|ichain| structure contains (in order), a pointer @@ -450,9 +450,9 @@ superclass in the same chain, and each slot must be stored in exactly one place. The layout of vtables doesn't have this second requirement: it doesn't matter that there are multiple method entry pointers for the same effective method as long as they all work correctly. Indeed, it's essential -that they do, because each chain's method entry function will need to apply a -different offset to the receiver pointer before invoking the effective -method. +that there are multiple entry pointers, because each chain's method entry +function will need to apply a different offset to the receiver pointer before +invoking the effective method. A vtable for a class $C$ with chain head $H$ has the following general structure. @@ -489,9 +489,9 @@ first. This is mostly an irrelevant detail, whose purpose is to defend against malicious compilers: pointers are always to one of the inner @|vt| -structures. It's important only because it's the outer @|vtu| union which is -exported by name. Specifically, for each chain of $C$'s superclasses there is -an external object +structures. It's important only because it's the outer @|vtu| union which is +exported by name. Specifically, for each chain of $C$'s superclasses there +is an external object \begin{prog} const union $A$__vtu_$i$ $C$__vtable_$i$; \end{prog}