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

Side by Side Diff: src/compiler/simplified-operator.h

Issue 555283004: [turbofan] Next step towards shared operators. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « src/compiler/simplified-lowering.cc ('k') | src/compiler/simplified-operator-reducer.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 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_COMPILER_SIMPLIFIED_OPERATOR_H_ 5 #ifndef V8_COMPILER_SIMPLIFIED_OPERATOR_H_
6 #define V8_COMPILER_SIMPLIFIED_OPERATOR_H_ 6 #define V8_COMPILER_SIMPLIFIED_OPERATOR_H_
7 7
8 #include "src/compiler/machine-operator.h" 8 #include "src/compiler/machine-operator.h"
9 #include "src/compiler/opcodes.h" 9 #include "src/compiler/opcodes.h"
10 #include "src/zone.h" 10 #include "src/zone.h"
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 SimpleOperator(IrOpcode::k##name, properties, inputs, outputs, #name); 126 SimpleOperator(IrOpcode::k##name, properties, inputs, outputs, #name);
127 127
128 #define OP1(name, ptype, pname, properties, inputs, outputs) \ 128 #define OP1(name, ptype, pname, properties, inputs, outputs) \
129 return new (zone_) \ 129 return new (zone_) \
130 Operator1<ptype>(IrOpcode::k##name, properties | Operator::kNoThrow, \ 130 Operator1<ptype>(IrOpcode::k##name, properties | Operator::kNoThrow, \
131 inputs, outputs, #name, pname) 131 inputs, outputs, #name, pname)
132 132
133 #define UNOP(name) SIMPLE(name, Operator::kPure, 1, 1) 133 #define UNOP(name) SIMPLE(name, Operator::kPure, 1, 1)
134 #define BINOP(name) SIMPLE(name, Operator::kPure, 2, 1) 134 #define BINOP(name) SIMPLE(name, Operator::kPure, 2, 1)
135 135
136 Operator* BooleanNot() const { UNOP(BooleanNot); } 136 const Operator* BooleanNot() const { UNOP(BooleanNot); }
137 137
138 Operator* NumberEqual() const { BINOP(NumberEqual); } 138 const Operator* NumberEqual() const { BINOP(NumberEqual); }
139 Operator* NumberLessThan() const { BINOP(NumberLessThan); } 139 const Operator* NumberLessThan() const { BINOP(NumberLessThan); }
140 Operator* NumberLessThanOrEqual() const { BINOP(NumberLessThanOrEqual); } 140 const Operator* NumberLessThanOrEqual() const {
141 Operator* NumberAdd() const { BINOP(NumberAdd); } 141 BINOP(NumberLessThanOrEqual);
142 Operator* NumberSubtract() const { BINOP(NumberSubtract); } 142 }
143 Operator* NumberMultiply() const { BINOP(NumberMultiply); } 143 const Operator* NumberAdd() const { BINOP(NumberAdd); }
144 Operator* NumberDivide() const { BINOP(NumberDivide); } 144 const Operator* NumberSubtract() const { BINOP(NumberSubtract); }
145 Operator* NumberModulus() const { BINOP(NumberModulus); } 145 const Operator* NumberMultiply() const { BINOP(NumberMultiply); }
146 Operator* NumberToInt32() const { UNOP(NumberToInt32); } 146 const Operator* NumberDivide() const { BINOP(NumberDivide); }
147 Operator* NumberToUint32() const { UNOP(NumberToUint32); } 147 const Operator* NumberModulus() const { BINOP(NumberModulus); }
148 const Operator* NumberToInt32() const { UNOP(NumberToInt32); }
149 const Operator* NumberToUint32() const { UNOP(NumberToUint32); }
148 150
149 Operator* ReferenceEqual(Type* type) const { BINOP(ReferenceEqual); } 151 const Operator* ReferenceEqual(Type* type) const { BINOP(ReferenceEqual); }
150 152
151 Operator* StringEqual() const { BINOP(StringEqual); } 153 const Operator* StringEqual() const { BINOP(StringEqual); }
152 Operator* StringLessThan() const { BINOP(StringLessThan); } 154 const Operator* StringLessThan() const { BINOP(StringLessThan); }
153 Operator* StringLessThanOrEqual() const { BINOP(StringLessThanOrEqual); } 155 const Operator* StringLessThanOrEqual() const {
154 Operator* StringAdd() const { BINOP(StringAdd); } 156 BINOP(StringLessThanOrEqual);
157 }
158 const Operator* StringAdd() const { BINOP(StringAdd); }
155 159
156 Operator* ChangeTaggedToInt32() const { UNOP(ChangeTaggedToInt32); } 160 const Operator* ChangeTaggedToInt32() const { UNOP(ChangeTaggedToInt32); }
157 Operator* ChangeTaggedToUint32() const { UNOP(ChangeTaggedToUint32); } 161 const Operator* ChangeTaggedToUint32() const { UNOP(ChangeTaggedToUint32); }
158 Operator* ChangeTaggedToFloat64() const { UNOP(ChangeTaggedToFloat64); } 162 const Operator* ChangeTaggedToFloat64() const { UNOP(ChangeTaggedToFloat64); }
159 Operator* ChangeInt32ToTagged() const { UNOP(ChangeInt32ToTagged); } 163 const Operator* ChangeInt32ToTagged() const { UNOP(ChangeInt32ToTagged); }
160 Operator* ChangeUint32ToTagged() const { UNOP(ChangeUint32ToTagged); } 164 const Operator* ChangeUint32ToTagged() const { UNOP(ChangeUint32ToTagged); }
161 Operator* ChangeFloat64ToTagged() const { UNOP(ChangeFloat64ToTagged); } 165 const Operator* ChangeFloat64ToTagged() const { UNOP(ChangeFloat64ToTagged); }
162 Operator* ChangeBoolToBit() const { UNOP(ChangeBoolToBit); } 166 const Operator* ChangeBoolToBit() const { UNOP(ChangeBoolToBit); }
163 Operator* ChangeBitToBool() const { UNOP(ChangeBitToBool); } 167 const Operator* ChangeBitToBool() const { UNOP(ChangeBitToBool); }
164 168
165 Operator* LoadField(const FieldAccess& access) const { 169 const Operator* LoadField(const FieldAccess& access) const {
166 OP1(LoadField, FieldAccess, access, Operator::kNoWrite, 1, 1); 170 OP1(LoadField, FieldAccess, access, Operator::kNoWrite, 1, 1);
167 } 171 }
168 Operator* StoreField(const FieldAccess& access) const { 172 const Operator* StoreField(const FieldAccess& access) const {
169 OP1(StoreField, FieldAccess, access, Operator::kNoRead, 2, 0); 173 OP1(StoreField, FieldAccess, access, Operator::kNoRead, 2, 0);
170 } 174 }
171 Operator* LoadElement(const ElementAccess& access) const { 175 const Operator* LoadElement(const ElementAccess& access) const {
172 OP1(LoadElement, ElementAccess, access, Operator::kNoWrite, 2, 1); 176 OP1(LoadElement, ElementAccess, access, Operator::kNoWrite, 2, 1);
173 } 177 }
174 Operator* StoreElement(const ElementAccess& access) const { 178 const Operator* StoreElement(const ElementAccess& access) const {
175 OP1(StoreElement, ElementAccess, access, Operator::kNoRead, 3, 0); 179 OP1(StoreElement, ElementAccess, access, Operator::kNoRead, 3, 0);
176 } 180 }
177 181
178 #undef BINOP 182 #undef BINOP
179 #undef UNOP 183 #undef UNOP
180 #undef OP1 184 #undef OP1
181 #undef SIMPLE 185 #undef SIMPLE
182 186
183 private: 187 private:
184 Zone* zone_; 188 Zone* zone_;
185 }; 189 };
186 } 190 }
187 } 191 }
188 } // namespace v8::internal::compiler 192 } // namespace v8::internal::compiler
189 193
190 #endif // V8_COMPILER_SIMPLIFIED_OPERATOR_H_ 194 #endif // V8_COMPILER_SIMPLIFIED_OPERATOR_H_
OLDNEW
« no previous file with comments | « src/compiler/simplified-lowering.cc ('k') | src/compiler/simplified-operator-reducer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698