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

Side by Side Diff: src/IceInstX8632.h

Issue 798693003: Subzero: Don't store std::string objects inside Variable. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Code review changes Created 6 years 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
OLDNEW
1 //===- subzero/src/IceInstX8632.h - Low-level x86 instructions --*- C++ -*-===// 1 //===- subzero/src/IceInstX8632.h - Low-level x86 instructions --*- 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 InstX8632 and OperandX8632 classes and 10 // This file declares the InstX8632 and OperandX8632 classes and
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 // SpillVariable decorates a Variable by linking it to another 145 // SpillVariable decorates a Variable by linking it to another
146 // Variable. When stack frame offsets are computed, the SpillVariable 146 // Variable. When stack frame offsets are computed, the SpillVariable
147 // is given a distinct stack slot only if its linked Variable has a 147 // is given a distinct stack slot only if its linked Variable has a
148 // register. If the linked Variable has a stack slot, then the 148 // register. If the linked Variable has a stack slot, then the
149 // Variable and SpillVariable share that slot. 149 // Variable and SpillVariable share that slot.
150 class SpillVariable : public Variable { 150 class SpillVariable : public Variable {
151 SpillVariable(const SpillVariable &) = delete; 151 SpillVariable(const SpillVariable &) = delete;
152 SpillVariable &operator=(const SpillVariable &) = delete; 152 SpillVariable &operator=(const SpillVariable &) = delete;
153 153
154 public: 154 public:
155 static SpillVariable *create(Cfg *Func, Type Ty, SizeT Index, 155 static SpillVariable *create(Cfg *Func, Type Ty, SizeT Index) {
156 const IceString &Name) { 156 return new (Func->allocate<SpillVariable>()) SpillVariable(Ty, Index);
157 return new (Func->allocate<SpillVariable>()) SpillVariable(Ty, Index, Name);
158 } 157 }
159 const static OperandKind SpillVariableKind = 158 const static OperandKind SpillVariableKind =
160 static_cast<OperandKind>(kVariable_Target); 159 static_cast<OperandKind>(kVariable_Target);
161 static bool classof(const Operand *Operand) { 160 static bool classof(const Operand *Operand) {
162 return Operand->getKind() == SpillVariableKind; 161 return Operand->getKind() == SpillVariableKind;
163 } 162 }
164 void setLinkedTo(Variable *Var) { LinkedTo = Var; } 163 void setLinkedTo(Variable *Var) { LinkedTo = Var; }
165 Variable *getLinkedTo() const { return LinkedTo; } 164 Variable *getLinkedTo() const { return LinkedTo; }
166 // Inherit dump() and emit() from Variable. 165 // Inherit dump() and emit() from Variable.
167 private: 166 private:
168 SpillVariable(Type Ty, SizeT Index, const IceString &Name) 167 SpillVariable(Type Ty, SizeT Index)
169 : Variable(SpillVariableKind, Ty, Index, Name), LinkedTo(NULL) {} 168 : Variable(SpillVariableKind, Ty, Index), LinkedTo(NULL) {}
170 Variable *LinkedTo; 169 Variable *LinkedTo;
171 }; 170 };
172 171
173 class InstX8632 : public InstTarget { 172 class InstX8632 : public InstTarget {
174 InstX8632(const InstX8632 &) = delete; 173 InstX8632(const InstX8632 &) = delete;
175 InstX8632 &operator=(const InstX8632 &) = delete; 174 InstX8632 &operator=(const InstX8632 &) = delete;
176 175
177 public: 176 public:
178 enum InstKindX8632 { 177 enum InstKindX8632 {
179 k__Start = Inst::Target, 178 k__Start = Inst::Target,
(...skipping 1411 matching lines...) Expand 10 before | Expand all | Expand 10 after
1591 template <> void InstX8632Pinsr::emitIAS(const Cfg *Func) const; 1590 template <> void InstX8632Pinsr::emitIAS(const Cfg *Func) const;
1592 template <> void InstX8632Movsx::emitIAS(const Cfg *Func) const; 1591 template <> void InstX8632Movsx::emitIAS(const Cfg *Func) const;
1593 template <> void InstX8632Movzx::emitIAS(const Cfg *Func) const; 1592 template <> void InstX8632Movzx::emitIAS(const Cfg *Func) const;
1594 template <> void InstX8632Pmull::emitIAS(const Cfg *Func) const; 1593 template <> void InstX8632Pmull::emitIAS(const Cfg *Func) const;
1595 template <> void InstX8632Pshufd::emitIAS(const Cfg *Func) const; 1594 template <> void InstX8632Pshufd::emitIAS(const Cfg *Func) const;
1596 template <> void InstX8632Shufps::emitIAS(const Cfg *Func) const; 1595 template <> void InstX8632Shufps::emitIAS(const Cfg *Func) const;
1597 1596
1598 } // end of namespace Ice 1597 } // end of namespace Ice
1599 1598
1600 #endif // SUBZERO_SRC_ICEINSTX8632_H 1599 #endif // SUBZERO_SRC_ICEINSTX8632_H
OLDNEW
« no previous file with comments | « src/IceInst.cpp ('k') | src/IceOperand.h » ('j') | src/IceOperand.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698