OLD | NEW |
---|---|
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 #include "src/compiler/machine-operator.h" | 5 #include "src/compiler/machine-operator.h" |
6 | 6 |
7 #include "src/base/lazy-instance.h" | 7 #include "src/base/lazy-instance.h" |
8 #include "src/compiler/opcodes.h" | 8 #include "src/compiler/opcodes.h" |
9 #include "src/compiler/operator.h" | 9 #include "src/compiler/operator.h" |
10 #include "src/v8.h" | 10 #include "src/v8.h" |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
167 0) {} \ | 167 0) {} \ |
168 }; \ | 168 }; \ |
169 Name##Operator k##Name; | 169 Name##Operator k##Name; |
170 PURE_OP_LIST(PURE) | 170 PURE_OP_LIST(PURE) |
171 #undef PURE | 171 #undef PURE |
172 | 172 |
173 #define LOAD(Type) \ | 173 #define LOAD(Type) \ |
174 struct Load##Type##Operator FINAL : public Operator1<LoadRepresentation> { \ | 174 struct Load##Type##Operator FINAL : public Operator1<LoadRepresentation> { \ |
175 Load##Type##Operator() \ | 175 Load##Type##Operator() \ |
176 : Operator1<LoadRepresentation>( \ | 176 : Operator1<LoadRepresentation>( \ |
177 IrOpcode::kLoad, Operator::kNoThrow | Operator::kNoWrite, \ | 177 IrOpcode::kLoad, Operator::kNoThrow | Operator::kNoWrite | \ |
178 Operator::kCommutative, \ | |
Benedikt Meurer
2014/12/11 10:16:21
Err, what's that?
| |
178 "Load", 2, 1, 1, 1, 1, 0, k##Type) {} \ | 179 "Load", 2, 1, 1, 1, 1, 0, k##Type) {} \ |
179 }; \ | 180 }; \ |
180 struct CheckedLoad##Type##Operator FINAL \ | 181 struct CheckedLoad##Type##Operator FINAL \ |
181 : public Operator1<CheckedLoadRepresentation> { \ | 182 : public Operator1<CheckedLoadRepresentation> { \ |
182 CheckedLoad##Type##Operator() \ | 183 CheckedLoad##Type##Operator() \ |
183 : Operator1<CheckedLoadRepresentation>( \ | 184 : Operator1<CheckedLoadRepresentation>( \ |
184 IrOpcode::kCheckedLoad, Operator::kNoThrow | Operator::kNoWrite, \ | 185 IrOpcode::kCheckedLoad, Operator::kNoThrow | Operator::kNoWrite, \ |
185 "CheckedLoad", 3, 1, 1, 1, 1, 0, k##Type) {} \ | 186 "CheckedLoad", 3, 1, 1, 1, 1, 0, k##Type) {} \ |
186 }; \ | 187 }; \ |
187 Load##Type##Operator kLoad##Type; \ | 188 Load##Type##Operator kLoad##Type; \ |
188 CheckedLoad##Type##Operator kCheckedLoad##Type; | 189 CheckedLoad##Type##Operator kCheckedLoad##Type; |
189 MACHINE_TYPE_LIST(LOAD) | 190 MACHINE_TYPE_LIST(LOAD) |
190 #undef LOAD | 191 #undef LOAD |
191 | 192 |
192 #define STORE(Type) \ | 193 #define STORE(Type) \ |
193 struct Store##Type##Operator : public Operator1<StoreRepresentation> { \ | 194 struct Store##Type##Operator : public Operator1<StoreRepresentation> { \ |
194 explicit Store##Type##Operator(WriteBarrierKind write_barrier_kind) \ | 195 explicit Store##Type##Operator(WriteBarrierKind write_barrier_kind) \ |
195 : Operator1<StoreRepresentation>( \ | 196 : Operator1<StoreRepresentation>( \ |
196 IrOpcode::kStore, Operator::kNoRead | Operator::kNoThrow, \ | 197 IrOpcode::kStore, \ |
198 Operator::kNoRead | Operator::kNoThrow | Operator::kCommutative, \ | |
Benedikt Meurer
2014/12/11 10:16:21
Err, what's that?
Benedikt Meurer
2014/12/11 10:16:21
Err, what's that?
| |
197 "Store", 3, 1, 1, 0, 1, 0, \ | 199 "Store", 3, 1, 1, 0, 1, 0, \ |
198 StoreRepresentation(k##Type, write_barrier_kind)) {} \ | 200 StoreRepresentation(k##Type, write_barrier_kind)) {} \ |
199 }; \ | 201 }; \ |
200 struct Store##Type##NoWriteBarrier##Operator FINAL \ | 202 struct Store##Type##NoWriteBarrier##Operator FINAL \ |
201 : public Store##Type##Operator { \ | 203 : public Store##Type##Operator { \ |
202 Store##Type##NoWriteBarrier##Operator() \ | 204 Store##Type##NoWriteBarrier##Operator() \ |
203 : Store##Type##Operator(kNoWriteBarrier) {} \ | 205 : Store##Type##Operator(kNoWriteBarrier) {} \ |
204 }; \ | 206 }; \ |
205 struct Store##Type##FullWriteBarrier##Operator FINAL \ | 207 struct Store##Type##FullWriteBarrier##Operator FINAL \ |
206 : public Store##Type##Operator { \ | 208 : public Store##Type##Operator { \ |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
312 } | 314 } |
313 // Uncached. | 315 // Uncached. |
314 return new (zone_) Operator1<CheckedStoreRepresentation>( | 316 return new (zone_) Operator1<CheckedStoreRepresentation>( |
315 IrOpcode::kCheckedStore, Operator::kNoRead | Operator::kNoThrow, | 317 IrOpcode::kCheckedStore, Operator::kNoRead | Operator::kNoThrow, |
316 "CheckedStore", 4, 1, 1, 0, 1, 0, rep); | 318 "CheckedStore", 4, 1, 1, 0, 1, 0, rep); |
317 } | 319 } |
318 | 320 |
319 } // namespace compiler | 321 } // namespace compiler |
320 } // namespace internal | 322 } // namespace internal |
321 } // namespace v8 | 323 } // namespace v8 |
OLD | NEW |