\contentsline {part}{I\hspace {1em}System Architecture}{6}{part.1}%
\contentsline {chapter}{\numberline {1}Package and File Structure}{7}{chapter.1}%
\contentsline {section}{\numberline {1.1}Source Tree Structure}{7}{section.1.1}%
\contentsline {section}{\numberline {1.2}Package structure}{7}{section.1.2}%
\contentsline {chapter}{\numberline {2}System Building}{9}{chapter.2}%
\contentsline {section}{\numberline {2.1}Compiling the C Startup Code}{9}{section.2.1}%
\contentsline {section}{\numberline {2.2}Compiling the Lisp Code}{9}{section.2.2}%
\contentsline {section}{\numberline {2.3}Building Core Images}{10}{section.2.3}%
\contentsline {part}{II\hspace {1em}Compiler Organization}{11}{part.2}%
\contentsline {chapter}{\numberline {3}Compiler Overview}{12}{chapter.3}%
\contentsline {chapter}{\numberline {4}The Implicit Continuation Representation}{14}{chapter.4}%
\contentsline {section}{\numberline {4.1}Tail sets}{15}{section.4.1}%
\contentsline {section}{\numberline {4.2}Hairy function representation}{16}{section.4.2}%
\contentsline {section}{\numberline {4.3}ICR representation of non-local exits}{16}{section.4.3}%
\contentsline {section}{\numberline {4.4}Block compilation}{17}{section.4.4}%
\contentsline {section}{\numberline {4.5}Entry points}{18}{section.4.5}%
\contentsline {chapter}{\numberline {5}ICR conversion}{20}{chapter.5}%
\contentsline {section}{\numberline {5.1}Canonical forms}{20}{section.5.1}%
\contentsline {subsection}{\numberline {5.1.1}Array hackery}{20}{subsection.5.1.1}%
\contentsline {section}{\numberline {5.2}Inline functions}{22}{section.5.2}%
\contentsline {section}{\numberline {5.3}Compilation policy}{22}{section.5.3}%
\contentsline {section}{\numberline {5.4}Notes}{22}{section.5.4}%
\contentsline {chapter}{\numberline {6}Local call analysis}{24}{chapter.6}%
\contentsline {chapter}{\numberline {7}Find components}{25}{chapter.7}%
\contentsline {chapter}{\numberline {8}ICR optimize}{26}{chapter.8}%
\contentsline {section}{\numberline {8.1}Goals for ICR optimizations}{27}{section.8.1}%
\contentsline {section}{\numberline {8.2}Flow graph simplification}{28}{section.8.2}%
\contentsline {section}{\numberline {8.3}Forward ICR optimizations}{28}{section.8.3}%
\contentsline {subsection}{\numberline {8.3.1}ICR transformation}{29}{subsection.8.3.1}%
\contentsline {section}{\numberline {8.4}Backward ICR optimizations}{29}{section.8.4}%
\contentsline {chapter}{\numberline {9}Type checking}{30}{chapter.9}%
\contentsline {chapter}{\numberline {10}Constraint propagation}{32}{chapter.10}%
\contentsline {chapter}{\numberline {11}ICR finalize}{34}{chapter.11}%
\contentsline {chapter}{\numberline {12}Environment analysis}{35}{chapter.12}%
\contentsline {chapter}{\numberline {13}Virtual Machine Representation Introduction}{37}{chapter.13}%
\contentsline {chapter}{\numberline {14}Global TN assignment}{38}{chapter.14}%
\contentsline {chapter}{\numberline {15}Local TN assignment}{40}{chapter.15}%
\contentsline {chapter}{\numberline {16}Control optimization}{42}{chapter.16}%
\contentsline {chapter}{\numberline {17}VMR conversion}{44}{chapter.17}%
\contentsline {section}{\numberline {17.1}VMR Control representation}{44}{section.17.1}%
\contentsline {section}{\numberline {17.2}Stack analysis}{45}{section.17.2}%
\contentsline {section}{\numberline {17.3}Non-local exit}{47}{section.17.3}%
\contentsline {chapter}{\numberline {18}Copy propagation}{48}{chapter.18}%
\contentsline {chapter}{\numberline {19}Representation selection}{49}{chapter.19}%
\contentsline {chapter}{\numberline {20}Lifetime analysis}{50}{chapter.20}%
\contentsline {section}{\numberline {20.1}Flow analysis}{50}{section.20.1}%
\contentsline {section}{\numberline {20.2}Conflict detection}{50}{section.20.2}%
\contentsline {chapter}{\numberline {21}Packing}{53}{chapter.21}%
\contentsline {chapter}{\numberline {22}Code generation}{56}{chapter.22}%
\contentsline {chapter}{\numberline {23}Assembly}{57}{chapter.23}%
\contentsline {chapter}{\numberline {24}Dumping}{58}{chapter.24}%
\contentsline {chapter}{\numberline {25}User Interface of the Compiler}{60}{chapter.25}%
\contentsline {section}{\numberline {25.1}Error Message Utilities}{60}{section.25.1}%
\contentsline {section}{\numberline {25.2}Source Paths}{60}{section.25.2}%
\contentsline {part}{III\hspace {1em}Compiler Retargeting}{61}{part.3}%
\contentsline {chapter}{\numberline {26}Retargeting the Compiler}{62}{chapter.26}%
\contentsline {chapter}{\numberline {27}Storage bases and classes}{64}{chapter.27}%
\contentsline {chapter}{\numberline {28}Type system parameterization}{66}{chapter.28}%
\contentsline {chapter}{\numberline {29}VOP Definition}{67}{chapter.29}%
\contentsline {section}{\numberline {29.1}Lifetime model}{67}{section.29.1}%
\contentsline {section}{\numberline {29.2}VOP Cost model}{68}{section.29.2}%
\contentsline {section}{\numberline {29.3}Efficiency notes}{68}{section.29.3}%
\contentsline {chapter}{\numberline {30}Assembler Retargeting}{69}{chapter.30}%
\contentsline {chapter}{\numberline {31}Writing Assembly Code}{70}{chapter.31}%
\contentsline {chapter}{\numberline {32}Required VOPS}{71}{chapter.32}%
\contentsline {section}{\numberline {32.1}Function Call}{72}{section.32.1}%
\contentsline {subsection}{\numberline {32.1.1}Registers and frame format}{72}{subsection.32.1.1}%
\contentsline {subsection}{\numberline {32.1.2}Full call}{72}{subsection.32.1.2}%
\contentsline {subsection}{\numberline {32.1.3}Unknown values return}{72}{subsection.32.1.3}%
\contentsline {subsection}{\numberline {32.1.4}External Entry Points}{72}{subsection.32.1.4}%
\contentsline {section}{\numberline {32.2}Calls}{73}{section.32.2}%
\contentsline {chapter}{\numberline {33}Standard Primitives}{78}{chapter.33}%
\contentsline {chapter}{\numberline {34}Customizing VMR Conversion}{79}{chapter.34}%
\contentsline {section}{\numberline {34.1}Constant Operands}{79}{section.34.1}%
\contentsline {section}{\numberline {34.2}Supporting Multiple Hardware Configurations}{79}{section.34.2}%
\contentsline {section}{\numberline {34.3}Special-case VMR convert methods}{80}{section.34.3}%
\contentsline {part}{IV\hspace {1em}Run-Time System}{81}{part.4}%
\contentsline {chapter}{\numberline {35}The Type System}{82}{chapter.35}%
\contentsline {chapter}{\numberline {36}The Info Database}{83}{chapter.36}%
\contentsline {chapter}{\numberline {37}The IR1 Interpreter}{84}{chapter.37}%
\contentsline {section}{\numberline {37.1}Use of \%PRIMITIVE}{86}{section.37.1}%
\contentsline {chapter}{\numberline {38}Debugger}{87}{chapter.38}%
\contentsline {section}{\numberline {38.1}Tracing and Breakpoints}{87}{section.38.1}%
\contentsline {chapter}{\numberline {39}Debugger Information}{89}{chapter.39}%
\contentsline {section}{\numberline {39.1}The Debug-Info Structure}{89}{section.39.1}%
\contentsline {subsection}{\numberline {39.1.1}Debugger Interface}{91}{subsection.39.1.1}%
\contentsline {subsection}{\numberline {39.1.2}Variable maps}{92}{subsection.39.1.2}%
\contentsline {subsection}{\numberline {39.1.3}Stack parsing}{94}{subsection.39.1.3}%
\contentsline {chapter}{\numberline {40}Object Format}{96}{chapter.40}%
\contentsline {section}{\numberline {40.1}Tagging}{96}{section.40.1}%
\contentsline {section}{\numberline {40.2}GC Comments}{96}{section.40.2}%
\contentsline {section}{\numberline {40.3}Structures}{97}{section.40.3}%
\contentsline {section}{\numberline {40.4}Fixnums}{97}{section.40.4}%
\contentsline {section}{\numberline {40.5}Other-immediates}{98}{section.40.5}%
\contentsline {section}{\numberline {40.6}Data-Blocks and Header-Word Format}{98}{section.40.6}%
\contentsline {section}{\numberline {40.7}Data-Blocks and Other-immediates Typing}{99}{section.40.7}%
\contentsline {section}{\numberline {40.8}Strings}{100}{section.40.8}%
\contentsline {section}{\numberline {40.9}Symbols and NIL}{100}{section.40.9}%
\contentsline {section}{\numberline {40.10}Array Headers}{101}{section.40.10}%
\contentsline {section}{\numberline {40.11}Bignums}{102}{section.40.11}%
\contentsline {section}{\numberline {40.12}Code Data-Blocks}{102}{section.40.12}%
\contentsline {section}{\numberline {40.13}Closure Format}{105}{section.40.13}%
\contentsline {section}{\numberline {40.14}Function call}{105}{section.40.14}%
\contentsline {section}{\numberline {40.15}Memory Layout}{105}{section.40.15}%
\contentsline {section}{\numberline {40.16}System Pointers}{106}{section.40.16}%
\contentsline {section}{\numberline {40.17}Weak Pointers}{106}{section.40.17}%
\contentsline {chapter}{\numberline {41}Memory Management}{107}{chapter.41}%
\contentsline {section}{\numberline {41.1}Stacks and Globals}{107}{section.41.1}%
\contentsline {section}{\numberline {41.2}Heap Layout}{107}{section.41.2}%
\contentsline {section}{\numberline {41.3}Garbage Collection}{107}{section.41.3}%
\contentsline {chapter}{\numberline {42}Interface to C and Assembler}{108}{chapter.42}%
\contentsline {section}{\numberline {42.1}Linkage Table}{108}{section.42.1}%
\contentsline {chapter}{\numberline {43}Low-level debugging}{109}{chapter.43}%
\contentsline {chapter}{\numberline {44}Core File Format}{110}{chapter.44}%
\contentsline {chapter}{\numberline {45}Fasload File Format}{111}{chapter.45}%
\contentsline {section}{\numberline {45.1}General}{111}{section.45.1}%
\contentsline {section}{\numberline {45.2}Strategy}{111}{section.45.2}%
\contentsline {section}{\numberline {45.3}Fasload Language}{112}{section.45.3}%
\contentsline {chapter}{\numberline {A}Glossary}{120}{appendix.A}%
