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. Κj–"thesis" style˜Iblockšœm˜mKšœC˜CKšœ_˜_Kšœ8˜8Kšœ;˜;KšœD˜DKšœ0˜0Kšœ#˜#KšœN˜NKšœ3˜3Kšœ2˜2K˜Kšœ-˜-KšœI˜IKšœ@˜@Kšœ=˜=Kšœ<˜˜>Kšœ˜Kšœ˜—…— N Ύ