Chromium Code Reviews| 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 |