28 #include "runtime/timer.hpp"
29
30 class IfNode;
31 class MergeMemNode;
32 class Node;
33 class PhaseGVN;
34
35 //------------------------------Phase------------------------------------------
36 // Most optimizations are done in Phases. Creating a phase does any long
37 // running analysis required, and caches the analysis in internal data
38 // structures. Later the analysis is queried using transform() calls to
39 // guide transforming the program. When the Phase is deleted, so is any
40 // cached analysis info. This basic Phase class mostly contains timing and
41 // memory management code.
42 class Phase : public StackObj {
43 public:
44 enum PhaseNumber {
45 Compiler, // Top-level compiler phase
46 Parser, // Parse bytecodes
47 Remove_Useless, // Remove useless nodes
48 Optimistic, // Optimistic analysis phase
49 GVN, // Pessimistic global value numbering phase
50 Ins_Select, // Instruction selection phase
51 CFG, // Build a CFG
52 BlockLayout, // Linear ordering of blocks
53 Register_Allocation, // Register allocation, duh
54 LIVE, // Dragon-book LIVE range problem
55 StringOpts, // StringBuilder related optimizations
56 Interference_Graph, // Building the IFG
57 Coalesce, // Coalescing copies
58 Ideal_Loop, // Find idealized trip-counted loops
59 Macro_Expand, // Expand macro nodes
60 Peephole, // Apply peephole optimizations
61 last_phase
62 };
63
64 enum PhaseTraceId {
65 _t_parser,
66 _t_optimizer,
67 _t_escapeAnalysis,
|
28 #include "runtime/timer.hpp"
29
30 class IfNode;
31 class MergeMemNode;
32 class Node;
33 class PhaseGVN;
34
35 //------------------------------Phase------------------------------------------
36 // Most optimizations are done in Phases. Creating a phase does any long
37 // running analysis required, and caches the analysis in internal data
38 // structures. Later the analysis is queried using transform() calls to
39 // guide transforming the program. When the Phase is deleted, so is any
40 // cached analysis info. This basic Phase class mostly contains timing and
41 // memory management code.
42 class Phase : public StackObj {
43 public:
44 enum PhaseNumber {
45 Compiler, // Top-level compiler phase
46 Parser, // Parse bytecodes
47 Remove_Useless, // Remove useless nodes
48 Renumber_Live, // First, remove useless nodes from the graph. Then, renumber live nodes.
49 Optimistic, // Optimistic analysis phase
50 GVN, // Pessimistic global value numbering phase
51 Ins_Select, // Instruction selection phase
52 CFG, // Build a CFG
53 BlockLayout, // Linear ordering of blocks
54 Register_Allocation, // Register allocation, duh
55 LIVE, // Dragon-book LIVE range problem
56 StringOpts, // StringBuilder related optimizations
57 Interference_Graph, // Building the IFG
58 Coalesce, // Coalescing copies
59 Ideal_Loop, // Find idealized trip-counted loops
60 Macro_Expand, // Expand macro nodes
61 Peephole, // Apply peephole optimizations
62 last_phase
63 };
64
65 enum PhaseTraceId {
66 _t_parser,
67 _t_optimizer,
68 _t_escapeAnalysis,
|