| 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/common-operator.h" | 5 #include "src/compiler/common-operator.h" |
| 6 | 6 |
| 7 #include "src/assembler.h" | 7 #include "src/assembler.h" |
| 8 #include "src/base/lazy-instance.h" | 8 #include "src/base/lazy-instance.h" |
| 9 #include "src/compiler/linkage.h" | 9 #include "src/compiler/linkage.h" |
| 10 #include "src/compiler/opcodes.h" | 10 #include "src/compiler/opcodes.h" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 return os; | 29 return os; |
| 30 } | 30 } |
| 31 | 31 |
| 32 | 32 |
| 33 BranchHint BranchHintOf(const Operator* const op) { | 33 BranchHint BranchHintOf(const Operator* const op) { |
| 34 DCHECK_EQ(IrOpcode::kBranch, op->opcode()); | 34 DCHECK_EQ(IrOpcode::kBranch, op->opcode()); |
| 35 return OpParameter<BranchHint>(op); | 35 return OpParameter<BranchHint>(op); |
| 36 } | 36 } |
| 37 | 37 |
| 38 | 38 |
| 39 size_t CaseIndexOf(const Operator* const op) { |
| 40 DCHECK_EQ(IrOpcode::kCase, op->opcode()); |
| 41 return OpParameter<size_t>(op); |
| 42 } |
| 43 |
| 44 |
| 39 bool operator==(SelectParameters const& lhs, SelectParameters const& rhs) { | 45 bool operator==(SelectParameters const& lhs, SelectParameters const& rhs) { |
| 40 return lhs.type() == rhs.type() && lhs.hint() == rhs.hint(); | 46 return lhs.type() == rhs.type() && lhs.hint() == rhs.hint(); |
| 41 } | 47 } |
| 42 | 48 |
| 43 | 49 |
| 44 bool operator!=(SelectParameters const& lhs, SelectParameters const& rhs) { | 50 bool operator!=(SelectParameters const& lhs, SelectParameters const& rhs) { |
| 45 return !(lhs == rhs); | 51 return !(lhs == rhs); |
| 46 } | 52 } |
| 47 | 53 |
| 48 | 54 |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 case BranchHint::kTrue: | 249 case BranchHint::kTrue: |
| 244 return &cache_.kBranchTrueOperator; | 250 return &cache_.kBranchTrueOperator; |
| 245 case BranchHint::kFalse: | 251 case BranchHint::kFalse: |
| 246 return &cache_.kBranchFalseOperator; | 252 return &cache_.kBranchFalseOperator; |
| 247 } | 253 } |
| 248 UNREACHABLE(); | 254 UNREACHABLE(); |
| 249 return nullptr; | 255 return nullptr; |
| 250 } | 256 } |
| 251 | 257 |
| 252 | 258 |
| 259 const Operator* CommonOperatorBuilder::Switch(size_t control_output_count) { |
| 260 DCHECK_GE(control_output_count, 2u); // Disallow trivial switches. |
| 261 return new (zone()) Operator( // -- |
| 262 IrOpcode::kSwitch, Operator::kFoldable, // opcode |
| 263 "Switch", // name |
| 264 1, 0, 1, 0, 0, control_output_count); // counts |
| 265 } |
| 266 |
| 267 |
| 268 const Operator* CommonOperatorBuilder::Case(size_t index) { |
| 269 return new (zone()) Operator1<size_t>( // -- |
| 270 IrOpcode::kCase, Operator::kFoldable, // opcode |
| 271 "Case", // name |
| 272 0, 0, 1, 0, 0, 1, // counts |
| 273 index); // parameter |
| 274 } |
| 275 |
| 276 |
| 253 const Operator* CommonOperatorBuilder::Start(int num_formal_parameters) { | 277 const Operator* CommonOperatorBuilder::Start(int num_formal_parameters) { |
| 254 // Outputs are formal parameters, plus context, receiver, and JSFunction. | 278 // Outputs are formal parameters, plus context, receiver, and JSFunction. |
| 255 const int value_output_count = num_formal_parameters + 3; | 279 const int value_output_count = num_formal_parameters + 3; |
| 256 return new (zone()) Operator( // -- | 280 return new (zone()) Operator( // -- |
| 257 IrOpcode::kStart, Operator::kFoldable, // opcode | 281 IrOpcode::kStart, Operator::kFoldable, // opcode |
| 258 "Start", // name | 282 "Start", // name |
| 259 0, 0, 0, value_output_count, 1, 1); // counts | 283 0, 0, 0, value_output_count, 1, 1); // counts |
| 260 } | 284 } |
| 261 | 285 |
| 262 | 286 |
| (...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 511 } else { | 535 } else { |
| 512 UNREACHABLE(); | 536 UNREACHABLE(); |
| 513 return nullptr; | 537 return nullptr; |
| 514 } | 538 } |
| 515 } | 539 } |
| 516 | 540 |
| 517 | 541 |
| 518 } // namespace compiler | 542 } // namespace compiler |
| 519 } // namespace internal | 543 } // namespace internal |
| 520 } // namespace v8 | 544 } // namespace v8 |
| OLD | NEW |