Next:
List of Tables
Up:
Zaleski Dissertation
Previous:
Zaleski Dissertation
Contents
List of Tables
List of Figures
1 Introduction
1 Challenges of Method-based JIT Compilation
2 Challenges of Efficient Interpretation
3 What We Need
4 Overview of Our Solution
5 Thesis Statement
6 Contributions
7 Outline of Thesis
2 Background
1 High Level Language Virtual Machine
1 Overview of a Virtual Program
2 Interpretation
3 Early Just in Time Compilers
2 Challenges to HLL VM Performance
1 Polymorphism and the Implications of Object-oriented Programming
2 Late binding
3 Early Dynamic Optimization
1 Manual Dynamic Optimization
2 Application specific dynamic compilation
3 Dynamic Compilation of Manually Identified Static Regions
4 Dynamic Object-oriented optimization
1 Finding the destination of a polymorphic callsite
2 Smalltalk and Self
3 Java JIT as Dynamic Optimizer
4 JIT Compiling Partial Methods
5 Traces
6 Hotpath
7 Branch Prediction and General Purpose Computers
1 Dynamic Hardware Branch Prediction
8 Chapter Summary
3 Dispatch Techniques
1 Switch Dispatch
2 Direct Call Threading
3 Direct Threading
4 The Context Problem
5 Subroutine Threading
6 Optimizing Dispatch
1 Superinstructions
2 Selective Inlining
3 Replication
7 Chapter Summary
4 Design and Implementation of Efficient Interpretation
1 Understanding Branches
2 Handling Linear Dispatch
3 Handling Virtual Branches
4 Handling Virtual Call and Return
5 Chapter Summary
5 Evaluation of Context Threading
1 Experimental Set-up
1 Virtual Machines and Benchmarks
2 Performance and Pipeline Hazard Measurements
2 Interpreting the data
1 Effect on Pipeline Branch Hazards
2 Performance
3 Inlining
4 Limitations of Context Threading
1 Heavyweight Virtual Instruction Bodies
2 Context Threading and Profiling
3 Development using SableVM
5 Chapter Summary
6 Design and Implementation of YETI
1 Structure and Overview of Yeti
2 Region Selection
1 Initiating Region Discovery
2 Linear Block Detection
3 Trace Selection
3 Trace Exit Runtime
1 Trace Linking
4 Generating code for traces
1 Interpreted Traces
2 JIT Compiled Traces
3 Trace Optimization
5 Other implementation details
6 Chapter Summary
7 Evaluation of Yeti
1 Experimental Set-up
2 Effect of region shape on dispatch
3 Effect of region shape on performance
4 Early Pentium Results
5 Identification of Stall Cycles
1 Identifying Causes of Stall Cycles
2 Stall Cycle results
3 Trends
6 Chapter Summary
8 Conclusions and Future Work
1 Conclusions and Lessons Learned
2 Future work
1 Virtual instruction bodies as nested functions
2 Extension to Runtime Typed Languages
3 New shapes of region body
4 Vision for new language implementation
3 Summary
Bibliography
Mathew Zaleski 2008-01-22