OLD | NEW |
1 //===- subzero/src/IceGlobalContext.h - Global context defs -----*- C++ -*-===// | 1 //===- subzero/src/IceGlobalContext.h - Global context defs -----*- C++ -*-===// |
2 // | 2 // |
3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 // | 9 // |
10 // This file declares aspects of the compilation that persist across | 10 // This file declares aspects of the compilation that persist across |
(...skipping 16 matching lines...) Expand all Loading... |
27 #include "IceTimerTree.h" | 27 #include "IceTimerTree.h" |
28 #include "IceTypes.h" | 28 #include "IceTypes.h" |
29 | 29 |
30 namespace Ice { | 30 namespace Ice { |
31 | 31 |
32 class ClFlags; | 32 class ClFlags; |
33 class FuncSigType; | 33 class FuncSigType; |
34 | 34 |
35 // This class collects rudimentary statistics during translation. | 35 // This class collects rudimentary statistics during translation. |
36 class CodeStats { | 36 class CodeStats { |
| 37 CodeStats(const CodeStats &) = delete; |
| 38 // CodeStats &operator=(const CodeStats &) = delete; |
| 39 |
37 public: | 40 public: |
38 CodeStats() | 41 CodeStats() |
39 : InstructionsEmitted(0), RegistersSaved(0), FrameBytes(0), Spills(0), | 42 : InstructionsEmitted(0), RegistersSaved(0), FrameBytes(0), Spills(0), |
40 Fills(0) {} | 43 Fills(0) {} |
41 void reset() { *this = CodeStats(); } | 44 void reset() { *this = CodeStats(); } |
42 void updateEmitted(uint32_t InstCount) { InstructionsEmitted += InstCount; } | 45 void updateEmitted(uint32_t InstCount) { InstructionsEmitted += InstCount; } |
43 void updateRegistersSaved(uint32_t Num) { RegistersSaved += Num; } | 46 void updateRegistersSaved(uint32_t Num) { RegistersSaved += Num; } |
44 void updateFrameBytes(uint32_t Bytes) { FrameBytes += Bytes; } | 47 void updateFrameBytes(uint32_t Bytes) { FrameBytes += Bytes; } |
45 void updateSpills() { ++Spills; } | 48 void updateSpills() { ++Spills; } |
46 void updateFills() { ++Fills; } | 49 void updateFills() { ++Fills; } |
(...skipping 11 matching lines...) Expand all Loading... |
58 uint32_t RegistersSaved; | 61 uint32_t RegistersSaved; |
59 uint32_t FrameBytes; | 62 uint32_t FrameBytes; |
60 uint32_t Spills; | 63 uint32_t Spills; |
61 uint32_t Fills; | 64 uint32_t Fills; |
62 }; | 65 }; |
63 | 66 |
64 // TODO: Accesses to all non-const fields of GlobalContext need to | 67 // TODO: Accesses to all non-const fields of GlobalContext need to |
65 // be synchronized, especially the constant pool, the allocator, and | 68 // be synchronized, especially the constant pool, the allocator, and |
66 // the output streams. | 69 // the output streams. |
67 class GlobalContext { | 70 class GlobalContext { |
| 71 GlobalContext(const GlobalContext &) = delete; |
| 72 GlobalContext &operator=(const GlobalContext &) = delete; |
| 73 |
68 public: | 74 public: |
69 GlobalContext(llvm::raw_ostream *OsDump, llvm::raw_ostream *OsEmit, | 75 GlobalContext(llvm::raw_ostream *OsDump, llvm::raw_ostream *OsEmit, |
70 VerboseMask Mask, TargetArch Arch, OptLevel Opt, | 76 VerboseMask Mask, TargetArch Arch, OptLevel Opt, |
71 IceString TestPrefix, const ClFlags &Flags); | 77 IceString TestPrefix, const ClFlags &Flags); |
72 ~GlobalContext(); | 78 ~GlobalContext(); |
73 | 79 |
74 // Returns true if any of the specified options in the verbose mask | 80 // Returns true if any of the specified options in the verbose mask |
75 // are set. If the argument is omitted, it checks if any verbose | 81 // are set. If the argument is omitted, it checks if any verbose |
76 // options at all are set. | 82 // options at all are set. |
77 VerboseMask getVerbose() const { return VMask; } | 83 VerboseMask getVerbose() const { return VMask; } |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
194 const TargetArch Arch; | 200 const TargetArch Arch; |
195 const OptLevel Opt; | 201 const OptLevel Opt; |
196 const IceString TestPrefix; | 202 const IceString TestPrefix; |
197 const ClFlags &Flags; | 203 const ClFlags &Flags; |
198 bool HasEmittedFirstMethod; | 204 bool HasEmittedFirstMethod; |
199 RandomNumberGenerator RNG; | 205 RandomNumberGenerator RNG; |
200 CodeStats StatsFunction; | 206 CodeStats StatsFunction; |
201 CodeStats StatsCumulative; | 207 CodeStats StatsCumulative; |
202 std::vector<TimerStack> Timers; | 208 std::vector<TimerStack> Timers; |
203 std::vector<GlobalDeclaration *> GlobalDeclarations; | 209 std::vector<GlobalDeclaration *> GlobalDeclarations; |
204 GlobalContext(const GlobalContext &) = delete; | |
205 GlobalContext &operator=(const GlobalContext &) = delete; | |
206 | 210 |
207 // Private helpers for mangleName() | 211 // Private helpers for mangleName() |
208 typedef llvm::SmallVector<char, 32> ManglerVector; | 212 typedef llvm::SmallVector<char, 32> ManglerVector; |
209 void incrementSubstitutions(ManglerVector &OldName) const; | 213 void incrementSubstitutions(ManglerVector &OldName) const; |
210 }; | 214 }; |
211 | 215 |
212 // Helper class to push and pop a timer marker. The constructor | 216 // Helper class to push and pop a timer marker. The constructor |
213 // pushes a marker, and the destructor pops it. This is for | 217 // pushes a marker, and the destructor pops it. This is for |
214 // convenient timing of regions of code. | 218 // convenient timing of regions of code. |
215 class TimerMarker { | 219 class TimerMarker { |
(...skipping 15 matching lines...) Expand all Loading... |
231 | 235 |
232 private: | 236 private: |
233 TimerIdT ID; | 237 TimerIdT ID; |
234 GlobalContext *const Ctx; | 238 GlobalContext *const Ctx; |
235 const bool Active; | 239 const bool Active; |
236 }; | 240 }; |
237 | 241 |
238 } // end of namespace Ice | 242 } // end of namespace Ice |
239 | 243 |
240 #endif // SUBZERO_SRC_ICEGLOBALCONTEXT_H | 244 #endif // SUBZERO_SRC_ICEGLOBALCONTEXT_H |
OLD | NEW |