80 class Unique_Node_List; 81 class nmethod; 82 class WarmCallInfo; 83 class Node_Stack; 84 struct Final_Reshape_Counts; 85 86 //------------------------------Compile---------------------------------------- 87 // This class defines a top-level Compiler invocation. 88 89 class Compile : public Phase { 90 friend class VMStructs; 91 92 public: 93 // Fixed alias indexes. (See also MergeMemNode.) 94 enum { 95 AliasIdxTop = 1, // pseudo-index, aliases to nothing (used as sentinel value) 96 AliasIdxBot = 2, // pseudo-index, aliases to everything 97 AliasIdxRaw = 3 // hard-wired index for TypeRawPtr::BOTTOM 98 }; 99 100 // Variant of TraceTime(NULL, &_t_accumulator, TimeCompiler); 101 // Integrated with logging. If logging is turned on, and dolog is true, 102 // then brackets are put into the log, with time stamps and node counts. 103 // (The time collection itself is always conditionalized on TimeCompiler.) 104 class TracePhase : public TraceTime { 105 private: 106 Compile* C; 107 CompileLog* _log; 108 const char* _phase_name; 109 bool _dolog; 110 public: 111 TracePhase(const char* name, elapsedTimer* accumulator, bool dolog); 112 ~TracePhase(); 113 }; 114 115 // Information per category of alias (memory slice) 116 class AliasType { 117 private: 118 friend class Compile; 119 120 int _index; // unique index, used with MergeMemNode 121 const TypePtr* _adr_type; // normalized address type 122 ciField* _field; // relevant instance field, or null if none 123 const Type* _element; // relevant array element type, or null if none 124 bool _is_rewritable; // false if the memory is write-once only 125 int _general_index; // if this is type is an instance, the general 126 // type that this is an instance of 127 128 void Init(int i, const TypePtr* at); 129 130 public: 131 int index() const { return _index; } | 80 class Unique_Node_List; 81 class nmethod; 82 class WarmCallInfo; 83 class Node_Stack; 84 struct Final_Reshape_Counts; 85 86 //------------------------------Compile---------------------------------------- 87 // This class defines a top-level Compiler invocation. 88 89 class Compile : public Phase { 90 friend class VMStructs; 91 92 public: 93 // Fixed alias indexes. (See also MergeMemNode.) 94 enum { 95 AliasIdxTop = 1, // pseudo-index, aliases to nothing (used as sentinel value) 96 AliasIdxBot = 2, // pseudo-index, aliases to everything 97 AliasIdxRaw = 3 // hard-wired index for TypeRawPtr::BOTTOM 98 }; 99 100 // Variant of TraceTime(NULL, &_t_accumulator, CITime); 101 // Integrated with logging. If logging is turned on, and CITimeVerbose is true, 102 // then brackets are put into the log, with time stamps and node counts. 103 // (The time collection itself is always conditionalized on CITime.) 104 class TracePhase : public TraceTime { 105 private: 106 Compile* C; 107 CompileLog* _log; 108 const char* _phase_name; 109 bool _dolog; 110 public: 111 TracePhase(const char* name, elapsedTimer* accumulator); 112 ~TracePhase(); 113 }; 114 115 // Information per category of alias (memory slice) 116 class AliasType { 117 private: 118 friend class Compile; 119 120 int _index; // unique index, used with MergeMemNode 121 const TypePtr* _adr_type; // normalized address type 122 ciField* _field; // relevant instance field, or null if none 123 const Type* _element; // relevant array element type, or null if none 124 bool _is_rewritable; // false if the memory is write-once only 125 int _general_index; // if this is type is an instance, the general 126 // type that this is an instance of 127 128 void Init(int i, const TypePtr* at); 129 130 public: 131 int index() const { return _index; } |