| 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 | 
|---|