OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/simplified-operator.h" | 5 #include "src/compiler/simplified-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/compiler/types.h" | 10 #include "src/compiler/types.h" |
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
324 op->opcode() == IrOpcode::kSpeculativeNumberShiftRightLogical || | 324 op->opcode() == IrOpcode::kSpeculativeNumberShiftRightLogical || |
325 op->opcode() == IrOpcode::kSpeculativeNumberBitwiseAnd || | 325 op->opcode() == IrOpcode::kSpeculativeNumberBitwiseAnd || |
326 op->opcode() == IrOpcode::kSpeculativeNumberBitwiseOr || | 326 op->opcode() == IrOpcode::kSpeculativeNumberBitwiseOr || |
327 op->opcode() == IrOpcode::kSpeculativeNumberBitwiseXor || | 327 op->opcode() == IrOpcode::kSpeculativeNumberBitwiseXor || |
328 op->opcode() == IrOpcode::kSpeculativeNumberEqual || | 328 op->opcode() == IrOpcode::kSpeculativeNumberEqual || |
329 op->opcode() == IrOpcode::kSpeculativeNumberLessThan || | 329 op->opcode() == IrOpcode::kSpeculativeNumberLessThan || |
330 op->opcode() == IrOpcode::kSpeculativeNumberLessThanOrEqual); | 330 op->opcode() == IrOpcode::kSpeculativeNumberLessThanOrEqual); |
331 return OpParameter<NumberOperationHint>(op); | 331 return OpParameter<NumberOperationHint>(op); |
332 } | 332 } |
333 | 333 |
| 334 int ParameterCountOf(const Operator* op) { |
| 335 DCHECK(op->opcode() == IrOpcode::kNewUnmappedArgumentsElements || |
| 336 op->opcode() == IrOpcode::kNewRestParameterElements); |
| 337 return OpParameter<int>(op); |
| 338 } |
| 339 |
334 PretenureFlag PretenureFlagOf(const Operator* op) { | 340 PretenureFlag PretenureFlagOf(const Operator* op) { |
335 DCHECK_EQ(IrOpcode::kAllocate, op->opcode()); | 341 DCHECK_EQ(IrOpcode::kAllocate, op->opcode()); |
336 return OpParameter<PretenureFlag>(op); | 342 return OpParameter<PretenureFlag>(op); |
337 } | 343 } |
338 | 344 |
339 UnicodeEncoding UnicodeEncodingOf(const Operator* op) { | 345 UnicodeEncoding UnicodeEncodingOf(const Operator* op) { |
340 DCHECK(op->opcode() == IrOpcode::kStringFromCodePoint); | 346 DCHECK(op->opcode() == IrOpcode::kStringFromCodePoint); |
341 return OpParameter<UnicodeEncoding>(op); | 347 return OpParameter<UnicodeEncoding>(op); |
342 } | 348 } |
343 | 349 |
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
730 const Operator* SimplifiedOperatorBuilder::TransitionElementsKind( | 736 const Operator* SimplifiedOperatorBuilder::TransitionElementsKind( |
731 ElementsTransition transition) { | 737 ElementsTransition transition) { |
732 return new (zone()) Operator1<ElementsTransition>( // -- | 738 return new (zone()) Operator1<ElementsTransition>( // -- |
733 IrOpcode::kTransitionElementsKind, // opcode | 739 IrOpcode::kTransitionElementsKind, // opcode |
734 Operator::kNoDeopt | Operator::kNoThrow, // flags | 740 Operator::kNoDeopt | Operator::kNoThrow, // flags |
735 "TransitionElementsKind", // name | 741 "TransitionElementsKind", // name |
736 3, 1, 1, 0, 1, 0, // counts | 742 3, 1, 1, 0, 1, 0, // counts |
737 transition); // parameter | 743 transition); // parameter |
738 } | 744 } |
739 | 745 |
| 746 const Operator* SimplifiedOperatorBuilder::NewUnmappedArgumentsElements( |
| 747 int parameter_count) { |
| 748 return new (zone()) Operator1<int>( // -- |
| 749 IrOpcode::kNewUnmappedArgumentsElements, // opcode |
| 750 Operator::kEliminatable, // flags |
| 751 "NewUnmappedArgumentsElements", // name |
| 752 0, 1, 0, 1, 1, 0, // counts |
| 753 parameter_count); // parameter |
| 754 } |
| 755 |
| 756 const Operator* SimplifiedOperatorBuilder::NewRestParameterElements( |
| 757 int parameter_count) { |
| 758 return new (zone()) Operator1<int>( // -- |
| 759 IrOpcode::kNewRestParameterElements, // opcode |
| 760 Operator::kEliminatable, // flags |
| 761 "NewRestParameterElements", // name |
| 762 0, 1, 0, 1, 1, 0, // counts |
| 763 parameter_count); // parameter |
| 764 } |
| 765 |
740 const Operator* SimplifiedOperatorBuilder::Allocate(PretenureFlag pretenure) { | 766 const Operator* SimplifiedOperatorBuilder::Allocate(PretenureFlag pretenure) { |
741 switch (pretenure) { | 767 switch (pretenure) { |
742 case NOT_TENURED: | 768 case NOT_TENURED: |
743 return &cache_.kAllocateNotTenuredOperator; | 769 return &cache_.kAllocateNotTenuredOperator; |
744 case TENURED: | 770 case TENURED: |
745 return &cache_.kAllocateTenuredOperator; | 771 return &cache_.kAllocateTenuredOperator; |
746 } | 772 } |
747 UNREACHABLE(); | 773 UNREACHABLE(); |
748 return nullptr; | 774 return nullptr; |
749 } | 775 } |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
820 Operator::kNoDeopt | Operator::kNoThrow | properties, \ | 846 Operator::kNoDeopt | Operator::kNoThrow | properties, \ |
821 #Name, value_input_count, 1, control_input_count, \ | 847 #Name, value_input_count, 1, control_input_count, \ |
822 output_count, 1, 0, access); \ | 848 output_count, 1, 0, access); \ |
823 } | 849 } |
824 ACCESS_OP_LIST(ACCESS) | 850 ACCESS_OP_LIST(ACCESS) |
825 #undef ACCESS | 851 #undef ACCESS |
826 | 852 |
827 } // namespace compiler | 853 } // namespace compiler |
828 } // namespace internal | 854 } // namespace internal |
829 } // namespace v8 | 855 } // namespace v8 |
OLD | NEW |