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/types.h" | 10 #include "src/types.h" |
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
419 V(ChangeTaggedToBit, Operator::kNoProperties, 1, 0) \ | 419 V(ChangeTaggedToBit, Operator::kNoProperties, 1, 0) \ |
420 V(ChangeBitToTagged, Operator::kNoProperties, 1, 0) \ | 420 V(ChangeBitToTagged, Operator::kNoProperties, 1, 0) \ |
421 V(TruncateTaggedToWord32, Operator::kNoProperties, 1, 0) \ | 421 V(TruncateTaggedToWord32, Operator::kNoProperties, 1, 0) \ |
422 V(TruncateTaggedToFloat64, Operator::kNoProperties, 1, 0) \ | 422 V(TruncateTaggedToFloat64, Operator::kNoProperties, 1, 0) \ |
423 V(ObjectIsCallable, Operator::kNoProperties, 1, 0) \ | 423 V(ObjectIsCallable, Operator::kNoProperties, 1, 0) \ |
424 V(ObjectIsNumber, Operator::kNoProperties, 1, 0) \ | 424 V(ObjectIsNumber, Operator::kNoProperties, 1, 0) \ |
425 V(ObjectIsReceiver, Operator::kNoProperties, 1, 0) \ | 425 V(ObjectIsReceiver, Operator::kNoProperties, 1, 0) \ |
426 V(ObjectIsSmi, Operator::kNoProperties, 1, 0) \ | 426 V(ObjectIsSmi, Operator::kNoProperties, 1, 0) \ |
427 V(ObjectIsString, Operator::kNoProperties, 1, 0) \ | 427 V(ObjectIsString, Operator::kNoProperties, 1, 0) \ |
428 V(ObjectIsUndetectable, Operator::kNoProperties, 1, 0) \ | 428 V(ObjectIsUndetectable, Operator::kNoProperties, 1, 0) \ |
| 429 V(ReferenceEqual, Operator::kCommutative, 2, 0) \ |
429 V(StringEqual, Operator::kCommutative, 2, 0) \ | 430 V(StringEqual, Operator::kCommutative, 2, 0) \ |
430 V(StringLessThan, Operator::kNoProperties, 2, 0) \ | 431 V(StringLessThan, Operator::kNoProperties, 2, 0) \ |
431 V(StringLessThanOrEqual, Operator::kNoProperties, 2, 0) | 432 V(StringLessThanOrEqual, Operator::kNoProperties, 2, 0) |
432 | 433 |
433 #define SPECULATIVE_NUMBER_BINOP_LIST(V) \ | 434 #define SPECULATIVE_NUMBER_BINOP_LIST(V) \ |
434 SIMPLIFIED_SPECULATIVE_NUMBER_BINOP_LIST(V) \ | 435 SIMPLIFIED_SPECULATIVE_NUMBER_BINOP_LIST(V) \ |
435 V(SpeculativeNumberEqual) \ | 436 V(SpeculativeNumberEqual) \ |
436 V(SpeculativeNumberLessThan) \ | 437 V(SpeculativeNumberLessThan) \ |
437 V(SpeculativeNumberLessThanOrEqual) | 438 V(SpeculativeNumberLessThanOrEqual) |
438 | 439 |
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
710 switch (mode) { | 711 switch (mode) { |
711 case CheckTaggedHoleMode::kConvertHoleToUndefined: | 712 case CheckTaggedHoleMode::kConvertHoleToUndefined: |
712 return &cache_.kCheckTaggedHoleConvertHoleToUndefinedOperator; | 713 return &cache_.kCheckTaggedHoleConvertHoleToUndefinedOperator; |
713 case CheckTaggedHoleMode::kNeverReturnHole: | 714 case CheckTaggedHoleMode::kNeverReturnHole: |
714 return &cache_.kCheckTaggedHoleNeverReturnHoleOperator; | 715 return &cache_.kCheckTaggedHoleNeverReturnHoleOperator; |
715 } | 716 } |
716 UNREACHABLE(); | 717 UNREACHABLE(); |
717 return nullptr; | 718 return nullptr; |
718 } | 719 } |
719 | 720 |
720 const Operator* SimplifiedOperatorBuilder::ReferenceEqual(Type* type) { | |
721 return new (zone()) Operator(IrOpcode::kReferenceEqual, | |
722 Operator::kCommutative | Operator::kPure, | |
723 "ReferenceEqual", 2, 0, 0, 1, 0, 0); | |
724 } | |
725 | |
726 const Operator* SimplifiedOperatorBuilder::EnsureWritableFastElements() { | 721 const Operator* SimplifiedOperatorBuilder::EnsureWritableFastElements() { |
727 return &cache_.kEnsureWritableFastElements; | 722 return &cache_.kEnsureWritableFastElements; |
728 } | 723 } |
729 | 724 |
730 const Operator* SimplifiedOperatorBuilder::MaybeGrowFastElements( | 725 const Operator* SimplifiedOperatorBuilder::MaybeGrowFastElements( |
731 GrowFastElementsFlags flags) { | 726 GrowFastElementsFlags flags) { |
732 return new (zone()) Operator1<GrowFastElementsFlags>( // -- | 727 return new (zone()) Operator1<GrowFastElementsFlags>( // -- |
733 IrOpcode::kMaybeGrowFastElements, // opcode | 728 IrOpcode::kMaybeGrowFastElements, // opcode |
734 Operator::kNoThrow, // flags | 729 Operator::kNoThrow, // flags |
735 "MaybeGrowFastElements", // name | 730 "MaybeGrowFastElements", // name |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
818 Operator::kNoDeopt | Operator::kNoThrow | properties, \ | 813 Operator::kNoDeopt | Operator::kNoThrow | properties, \ |
819 #Name, value_input_count, 1, control_input_count, \ | 814 #Name, value_input_count, 1, control_input_count, \ |
820 output_count, 1, 0, access); \ | 815 output_count, 1, 0, access); \ |
821 } | 816 } |
822 ACCESS_OP_LIST(ACCESS) | 817 ACCESS_OP_LIST(ACCESS) |
823 #undef ACCESS | 818 #undef ACCESS |
824 | 819 |
825 } // namespace compiler | 820 } // namespace compiler |
826 } // namespace internal | 821 } // namespace internal |
827 } // namespace v8 | 822 } // namespace v8 |
OLD | NEW |