Table of Contents
BackCover
Modern Compiler Implementation in Java, Second Edition
Preface
Part One: Fundamentals of Compilation
Chapter 1: Introduction
1.1 MODULES AND INTERFACES
1.2 TOOLS AND SOFTWARE
1.3 DATA STRUCTURES FOR TREE LANGUAGES
PROGRAM STRAIGHT-LINE PROGRAM INTERPRETER
EXERCISES
Chapter 2: Lexical Analysis
2.1 LEXICAL TOKENS
2.2 REGULAR EXPRESSIONS
2.3 FINITE AUTOMATA
2.4 NONDETERMINISTIC FINITE AUTOMATA
2.5 LEXICAL-ANALYZER GENERATORS
PROGRAM LEXICAL ANALYSIS
FURTHER READING
EXERCISES
Chapter 3: Parsing
3.1 CONTEXT-FREE GRAMMARS
3.2 PREDICTIVE PARSING
3.3 LR PARSING
3.4 USING PARSER GENERATORS
3.5 ERROR RECOVERY
PROGRAM PARSING
FURTHER READING
EXERCISES
Chapter 4: Abstract Syntax
4.1 SEMANTIC ACTIONS
4.2 ABSTRACT PARSE TREES
4.3 VISITORS
PROGRAM ABSTRACT SYNTAX
FURTHER READING
EXERCISES
Chapter 5: Semantic Analysis
5.1 SYMBOL TABLES
5.2 TYPE-CHECKING MiniJava
PROGRAM TYPE-CHECKING
EXERCISES
Chapter 6: Activation Records
HIGHER-ORDER FUNCTIONS
6.1 STACK FRAMES
PROGRAM FRAMES
FURTHER READING
EXERCISES
Chapter 7: Translation to Intermediate Code
7.1 INTERMEDIATE REPRESENTATION TREES
7.2 TRANSLATION INTO TREES
7.3 DECLARATIONS
PROGRAM TRANSLATION TO TREES
EXERCISES
Chapter 8: Basic Blocks and Traces
8.1 CANONICAL TREES
8.2 TAMING CONDITIONAL BRANCHES
FURTHER READING
EXERCISES
Chapter 9: Instruction Selection
TREE PATTERNS
OPTIMAL AND OPTIMUM TILINGS
9.1 ALGORITHMS FOR INSTRUCTION SELECTION
9.2 CISC MACHINES
9.3 INSTRUCTION SELECTION FOR THE MiniJava COMPILER
PROGRAM INSTRUCTION SELECTION
FURTHER READING
EXERCISES
Chapter 10: Liveness Analysis
10.1 SOLUTION OF DATAFLOW EQUATIONS
10.2 LIVENESS IN THE MiniJava COMPILER
PROGRAM CONSTRUCTING FLOW GRAPHS
PROGRAM LIVENESS
EXERCISES
Chapter 11: Register Allocation
11.1 COLORING BY SIMPLIFICATION
11.2 COALESCING
11.3 PRECOLORED NODES
11.4 GRAPH-COLORING IMPLEMENTATION
11.5 REGISTER ALLOCATION FOR TREES
PROGRAM GRAPH COLORING
FURTHER READING
EXERCISES
Chapter 12: Putting It All Together
PROGRAM PROCEDURE ENTRY/EXIT
PROGRAM MAKING IT WORK
Part Two: Advanced Topics
Chapter 13: Garbage Collection
13.1 MARK-AND-SWEEP COLLECTION
13.2 REFERENCE COUNTS
13.3 COPYING COLLECTION
13.4 GENERATIONAL COLLECTION
13.5 INCREMENTAL COLLECTION
13.6 BAKER'S ALGORITHM
13.7 INTERFACE TO THE COMPILER
PROGRAM DESCRIPTORS
PROGRAM GARBAGE COLLECTION
FURTHER READING
EXERCISES
Chapter 14: Object-Oriented Languages
14.1 CLASS EXTENSION
14.2 SINGLE INHERITANCE OF DATA FIELDS
14.3 MULTIPLE INHERITANCE
14.4 TESTING CLASS MEMBERSHIP
14.5 PRIVATE FIELDS AND METHODS
14.6 CLASSLESS LANGUAGES
14.7 OPTIMIZING OBJECT-ORIENTED PROGRAMS
PROGRAM MiniJava WITH CLASS EXTENSION
FURTHER READING
EXERCISES
Chapter 15: Functional Programming Languages
15.1 A SIMPLE FUNCTIONAL LANGUAGE
15.2 CLOSURES
15.3 IMMUTABLE VARIABLES
15.4 INLINE EXPANSION
15.5 CLOSURE CONVERSION
15.6 EFFICIENT TAIL RECURSION
15.7 LAZY EVALUATION
PROGRAM COMPILING FUNCTIONAL LANGUAGES
EXERCISES
Chapter 16: Polymorphic Types
16.1 PARAMETRIC POLYMORPHISM
16.2 POLYMORPHIC TYPE-CHECKING
16.3 TRANSLATION OF POLYMORPHIC PROGRAMS
16.4 RESOLUTION OF STATIC OVERLOADING
FURTHER READING
EXERCISES
Chapter 17: Dataflow Analysis
NO MAGIC BULLET
17.1 INTERMEDIATE REPRESENTATION FOR FLOW ANALYSIS
17.2 VARIOUS DATAFLOW ANALYSES
17.3 TRANSFORMATIONS USING DATAFLOW ANALYSIS
17.4 SPEEDING UP DATAFLOW ANALYSIS
17.5 ALIAS ANALYSIS
FURTHER READING
EXERCISES
Chapter 18: Loop Optimizations
REDUCIBLE FLOW GRAPHS
18.1 DOMINATORS
18.2 LOOP-INVARIANT COMPUTATIONS
18.5 LOOP UNROLLING
FURTHER READING
EXERCISES
Chapter 19: Static Single-Assignment Form
19.1 CONVERTING TO SSA FORM
19.2 EFFICIENT COMPUTATION OF THE DOMINATOR TREE
19.3 OPTIMIZATION ALGORITHMS USING SSA
19.5 THE CONTROL-DEPENDENCE GRAPH
19.6 CONVERTING BACK FROM SSA FORM
19.7 A FUNCTIONAL INTERMEDIATE FORM
FURTHER READING
EXERCISES
Chapter 20: Pipelining and Scheduling
20.1 LOOP SCHEDULING WITHOUT RESOURCE BOUNDS
20.2 RESOURCE-BOUNDED LOOP PIPELINING
20.3 BRANCH PREDICTION
FURTHER READING
EXERCISES
Chapter 21: The Memory Hierarchy
21.1 CACHE ORGANIZATION
21.2 CACHE-BLOCK ALIGNMENT
21.3 PREFETCHING
21.4 LOOP INTERCHANGE
21.5 BLOCKING
21.6 GARBAGE COLLECTION & THE MEMORY HIERARCHY
FURTHER READING
EXERCISES
Appendix A: MiniJava Language Reference Manual
A.2 GRAMMAR
A.3 SAMPLE PROGRAM
Bibliography
Index
Index_B
Index_C
Index_D-E
Index_F
Index_G
Index_H
Index_I
Index_J
Index_K
Index_L
Index_M
Index_N
Index_O
Index_P
Index_Q
Index_R
Index_S
Index_T
Index_U
Index_V
Index_W-X
Index_Y-Z
List of Figures
List of Tables
List of Examples