Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(692)

Side by Side Diff: src/IceTargetLowering.h

Issue 656123003: Subzero: Class definition cleanup. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Changes for Karl Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/IceRNG.h ('k') | src/IceTargetLoweringX8632.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 //===- subzero/src/IceTargetLowering.h - Lowering interface -----*- C++ -*-===// 1 //===- subzero/src/IceTargetLowering.h - Lowering interface -----*- 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 the TargetLowering and LoweringContext 10 // This file declares the TargetLowering and LoweringContext
(...skipping 17 matching lines...) Expand all
28 28
29 class Assembler; 29 class Assembler;
30 30
31 // LoweringContext makes it easy to iterate through non-deleted 31 // LoweringContext makes it easy to iterate through non-deleted
32 // instructions in a node, and insert new (lowered) instructions at 32 // instructions in a node, and insert new (lowered) instructions at
33 // the current point. Along with the instruction list container and 33 // the current point. Along with the instruction list container and
34 // associated iterators, it holds the current node, which is needed 34 // associated iterators, it holds the current node, which is needed
35 // when inserting new instructions in order to track whether variables 35 // when inserting new instructions in order to track whether variables
36 // are used as single-block or multi-block. 36 // are used as single-block or multi-block.
37 class LoweringContext { 37 class LoweringContext {
38 LoweringContext(const LoweringContext &) = delete;
39 LoweringContext &operator=(const LoweringContext &) = delete;
40
38 public: 41 public:
39 LoweringContext() : Node(NULL) {} 42 LoweringContext() : Node(NULL) {}
40 ~LoweringContext() {} 43 ~LoweringContext() {}
41 void init(CfgNode *Node); 44 void init(CfgNode *Node);
42 Inst *getNextInst() const { 45 Inst *getNextInst() const {
43 if (Next == End) 46 if (Next == End)
44 return NULL; 47 return NULL;
45 return *Next; 48 return *Next;
46 } 49 }
47 Inst *getNextInst(InstList::iterator &Iter) const { 50 Inst *getNextInst(InstList::iterator &Iter) const {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 // instructions come between the two points. 82 // instructions come between the two points.
80 InstList::iterator Next; 83 InstList::iterator Next;
81 // Begin is a copy of Insts.begin(), used if iterators are moved backward. 84 // Begin is a copy of Insts.begin(), used if iterators are moved backward.
82 InstList::iterator Begin; 85 InstList::iterator Begin;
83 // End is a copy of Insts.end(), used if Next needs to be advanced. 86 // End is a copy of Insts.end(), used if Next needs to be advanced.
84 InstList::iterator End; 87 InstList::iterator End;
85 88
86 void skipDeleted(InstList::iterator &I) const; 89 void skipDeleted(InstList::iterator &I) const;
87 void advanceForward(InstList::iterator &I) const; 90 void advanceForward(InstList::iterator &I) const;
88 void advanceBackward(InstList::iterator &I) const; 91 void advanceBackward(InstList::iterator &I) const;
89 LoweringContext(const LoweringContext &) = delete;
90 LoweringContext &operator=(const LoweringContext &) = delete;
91 }; 92 };
92 93
93 class TargetLowering { 94 class TargetLowering {
95 TargetLowering(const TargetLowering &) = delete;
96 TargetLowering &operator=(const TargetLowering &) = delete;
97
94 public: 98 public:
95 static TargetLowering *createLowering(TargetArch Target, Cfg *Func); 99 static TargetLowering *createLowering(TargetArch Target, Cfg *Func);
96 static Assembler *createAssembler(TargetArch Target, Cfg *Func); 100 static Assembler *createAssembler(TargetArch Target, Cfg *Func);
97 void translate() { 101 void translate() {
98 switch (Ctx->getOptLevel()) { 102 switch (Ctx->getOptLevel()) {
99 case Opt_m1: 103 case Opt_m1:
100 translateOm1(); 104 translateOm1();
101 break; 105 break;
102 case Opt_0: 106 case Opt_0:
103 translateO0(); 107 translateO0();
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 virtual void postLower() {} 230 virtual void postLower() {}
227 231
228 Cfg *Func; 232 Cfg *Func;
229 GlobalContext *Ctx; 233 GlobalContext *Ctx;
230 bool HasComputedFrame; 234 bool HasComputedFrame;
231 bool CallsReturnsTwice; 235 bool CallsReturnsTwice;
232 // StackAdjustment keeps track of the current stack offset from its 236 // StackAdjustment keeps track of the current stack offset from its
233 // natural location, as arguments are pushed for a function call. 237 // natural location, as arguments are pushed for a function call.
234 int32_t StackAdjustment; 238 int32_t StackAdjustment;
235 LoweringContext Context; 239 LoweringContext Context;
236
237 private:
238 TargetLowering(const TargetLowering &) = delete;
239 TargetLowering &operator=(const TargetLowering &) = delete;
240 }; 240 };
241 241
242 // TargetGlobalInitLowering is used for "lowering" global 242 // TargetGlobalInitLowering is used for "lowering" global
243 // initializers. It is separated out from TargetLowering because it 243 // initializers. It is separated out from TargetLowering because it
244 // does not require a Cfg. 244 // does not require a Cfg.
245 class TargetGlobalInitLowering { 245 class TargetGlobalInitLowering {
246 TargetGlobalInitLowering(const TargetGlobalInitLowering &) = delete;
247 TargetGlobalInitLowering &operator=(const TargetGlobalInitLowering &) =
248 delete;
249
246 public: 250 public:
247 static TargetGlobalInitLowering *createLowering(TargetArch Target, 251 static TargetGlobalInitLowering *createLowering(TargetArch Target,
248 GlobalContext *Ctx); 252 GlobalContext *Ctx);
249 virtual ~TargetGlobalInitLowering(); 253 virtual ~TargetGlobalInitLowering();
250 254
251 virtual void lower(const VariableDeclaration &Var) = 0; 255 virtual void lower(const VariableDeclaration &Var) = 0;
252 256
253 protected: 257 protected:
254 TargetGlobalInitLowering(GlobalContext *Ctx) : Ctx(Ctx) {} 258 TargetGlobalInitLowering(GlobalContext *Ctx) : Ctx(Ctx) {}
255 GlobalContext *Ctx; 259 GlobalContext *Ctx;
256
257 private:
258 TargetGlobalInitLowering(const TargetGlobalInitLowering &) = delete;
259 TargetGlobalInitLowering &operator=(const TargetGlobalInitLowering &) =
260 delete;
261 }; 260 };
262 261
263 } // end of namespace Ice 262 } // end of namespace Ice
264 263
265 #endif // SUBZERO_SRC_ICETARGETLOWERING_H 264 #endif // SUBZERO_SRC_ICETARGETLOWERING_H
OLDNEW
« no previous file with comments | « src/IceRNG.h ('k') | src/IceTargetLoweringX8632.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698