Figure 2-1. Unoptimized code generation with monotonically increasing statement map and simple symbol table.
Figure 4-1. Runtime debugging tables provided by the FDS compiler.
Figure 4-2. Showing the effects of optimization at a level suitable for variable modification.
Figure 4-3. Local explanation and new breakpoint types.
Figure 5-1. Summary of the problem addressed by Navigator.
Figure 5-2. Relationship between Navigator system and Cedar system.
Figure 5-3. Inline procedure expansion example.
Figure 5-4. Cross-jumping example.
Figure 5-5. Difficult case for hardware-supported execution-history mechanism.
Figure 5-6. Path determination by variable values.
Figure 5-7. Summary of the Navigator improvements.
Figure 6-1. Structure of the Cedar compiler.
Figure 6-2. Inline procedure expansion in the abstract syntax tree form.
Figure 6-3. Nested inline procedure expansion with subsumption.
Figure 6-4. Inline procedure declared in definitions module.
Figure 6-5. Ordering of path comparisons for cross-jumping.
Figure 6-6. Anatomy of a merge: paths 1 and 2 of Figure 6-6.
Figure 6-7. Data structures of the abstract code stream cells.
Figure 6-8. Program fragment with undeterminable paths.
Figure 6-9. Two different code generation templates for SELECT statements.
Figure 6-10. Simple repeated cross-jumping.
Figure 6-11a. Repeated cross-jumping with embedded control-flow, part 1.
Figure 6-11b. Repeated cross-jumping with embedded control-flow, part 2.
Figure 6-12. Repeated cross-jumping of Figure 6-10 with a different cross-jumping ordering.
Figure 6-13. Keeping the joining jump's sentry information.
Figure 6-14. Cross-jumping after inline procedure expansion.
Figure 6-15. Bypassing: path determiner movement for dynamic deletion.
Figure 6-16. Path determiner movement for physical code deletion.
Figure 6-17. Merged regions can abut.
Figure 6-18. Merged regions can overlap.
Figure 6-19. Steps in the creation of essential ambiguity.
Figure 7-1. Actual repeated cross-jumping: all paths the same length.
Figure 7-2. Idealized repeated cross-jumping: all paths the same length.
Figure 7-3. Actual and idealized repeated cross-jumping: successively shorter paths.
Figure 7-4a. Actual repeated cross-jumping: successively longer paths (part 1).
Figure 7-4b. Actual repeated cross-jumping: successively longer paths (part 2).
Figure 7-5. Idealized repeated cross-jumping: successively longer paths.
Figure 7-6. First Crossing Marks algorithm on successively longer paths.
Figure 7-7. Embedded Label algorithm on sucessively longer paths.
Figure 7-8. Introduced ambiguity.
Figure 7-9. Incorrect path determination.
Figure 7-10. Combined algorithm on successively longer paths.
Figure 7-11. Juxtaposed case.
Figure 7-12. Path determiner minimization applied to the final form of the successively longer repeated merge from Figure 7-4.