| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 V(CallStub) \ | 89 V(CallStub) \ |
| 90 V(Change) \ | 90 V(Change) \ |
| 91 V(CheckFunction) \ | 91 V(CheckFunction) \ |
| 92 V(CheckHeapObject) \ | 92 V(CheckHeapObject) \ |
| 93 V(CheckInstanceType) \ | 93 V(CheckInstanceType) \ |
| 94 V(CheckMaps) \ | 94 V(CheckMaps) \ |
| 95 V(CheckSmi) \ | 95 V(CheckSmi) \ |
| 96 V(CheckPrototypeMaps) \ | 96 V(CheckPrototypeMaps) \ |
| 97 V(ClampToUint8) \ | 97 V(ClampToUint8) \ |
| 98 V(ClassOfTestAndBranch) \ | 98 V(ClassOfTestAndBranch) \ |
| 99 V(CompareIDAndBranch) \ | 99 V(CompareNumericAndBranch) \ |
| 100 V(CompareGeneric) \ | 100 V(CompareGeneric) \ |
| 101 V(CompareObjectEqAndBranch) \ | 101 V(CompareObjectEqAndBranch) \ |
| 102 V(CompareMap) \ | 102 V(CompareMap) \ |
| 103 V(CompareConstantEqAndBranch) \ | 103 V(CompareConstantEqAndBranch) \ |
| 104 V(Constant) \ | 104 V(Constant) \ |
| 105 V(Context) \ | 105 V(Context) \ |
| 106 V(DebugBreak) \ | 106 V(DebugBreak) \ |
| 107 V(DeclareGlobals) \ | 107 V(DeclareGlobals) \ |
| 108 V(DeleteProperty) \ | 108 V(DeleteProperty) \ |
| 109 V(Deoptimize) \ | 109 V(Deoptimize) \ |
| (...skipping 1489 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1599 | 1599 |
| 1600 virtual void PrintDataTo(StringStream* stream); | 1600 virtual void PrintDataTo(StringStream* stream); |
| 1601 | 1601 |
| 1602 HValue* value() { return OperandAt(0); } | 1602 HValue* value() { return OperandAt(0); } |
| 1603 }; | 1603 }; |
| 1604 | 1604 |
| 1605 | 1605 |
| 1606 class HBranch: public HUnaryControlInstruction { | 1606 class HBranch: public HUnaryControlInstruction { |
| 1607 public: | 1607 public: |
| 1608 HBranch(HValue* value, | 1608 HBranch(HValue* value, |
| 1609 HBasicBlock* true_target, | 1609 ToBooleanStub::Types expected_input_types = ToBooleanStub::Types(), |
| 1610 HBasicBlock* false_target, | 1610 HBasicBlock* true_target = NULL, |
| 1611 ToBooleanStub::Types expected_input_types = ToBooleanStub::Types()) | 1611 HBasicBlock* false_target = NULL) |
| 1612 : HUnaryControlInstruction(value, true_target, false_target), | 1612 : HUnaryControlInstruction(value, true_target, false_target), |
| 1613 expected_input_types_(expected_input_types) { | 1613 expected_input_types_(expected_input_types) { |
| 1614 ASSERT(true_target != NULL && false_target != NULL); | |
| 1615 SetFlag(kAllowUndefinedAsNaN); | |
| 1616 } | |
| 1617 explicit HBranch(HValue* value) | |
| 1618 : HUnaryControlInstruction(value, NULL, NULL) { | |
| 1619 SetFlag(kAllowUndefinedAsNaN); | |
| 1620 } | |
| 1621 HBranch(HValue* value, ToBooleanStub::Types expected_input_types) | |
| 1622 : HUnaryControlInstruction(value, NULL, NULL), | |
| 1623 expected_input_types_(expected_input_types) { | |
| 1624 SetFlag(kAllowUndefinedAsNaN); | 1614 SetFlag(kAllowUndefinedAsNaN); |
| 1625 } | 1615 } |
| 1626 | 1616 |
| 1627 virtual Representation RequiredInputRepresentation(int index) { | 1617 virtual Representation RequiredInputRepresentation(int index) { |
| 1628 return Representation::None(); | 1618 return Representation::None(); |
| 1629 } | 1619 } |
| 1630 virtual Representation observed_input_representation(int index); | 1620 virtual Representation observed_input_representation(int index); |
| 1631 | 1621 |
| 1632 ToBooleanStub::Types expected_input_types() const { | 1622 ToBooleanStub::Types expected_input_types() const { |
| 1633 return expected_input_types_; | 1623 return expected_input_types_; |
| 1634 } | 1624 } |
| 1635 | 1625 |
| 1636 DECLARE_CONCRETE_INSTRUCTION(Branch) | 1626 DECLARE_CONCRETE_INSTRUCTION(Branch) |
| 1637 | 1627 |
| 1638 private: | 1628 private: |
| 1639 ToBooleanStub::Types expected_input_types_; | 1629 ToBooleanStub::Types expected_input_types_; |
| 1640 }; | 1630 }; |
| 1641 | 1631 |
| 1642 | 1632 |
| 1643 class HCompareMap: public HUnaryControlInstruction { | 1633 class HCompareMap: public HUnaryControlInstruction { |
| 1644 public: | 1634 public: |
| 1645 HCompareMap(HValue* value, | 1635 HCompareMap(HValue* value, |
| 1646 Handle<Map> map, | 1636 Handle<Map> map, |
| 1647 HBasicBlock* true_target, | 1637 HBasicBlock* true_target = NULL, |
| 1648 HBasicBlock* false_target) | 1638 HBasicBlock* false_target = NULL) |
| 1649 : HUnaryControlInstruction(value, true_target, false_target), | 1639 : HUnaryControlInstruction(value, true_target, false_target), |
| 1650 map_(map) { | 1640 map_(map) { |
| 1651 ASSERT(true_target != NULL); | |
| 1652 ASSERT(false_target != NULL); | |
| 1653 ASSERT(!map.is_null()); | 1641 ASSERT(!map.is_null()); |
| 1654 } | 1642 } |
| 1655 | 1643 |
| 1656 virtual void PrintDataTo(StringStream* stream); | 1644 virtual void PrintDataTo(StringStream* stream); |
| 1657 | 1645 |
| 1658 Handle<Map> map() const { return map_; } | 1646 Handle<Map> map() const { return map_; } |
| 1659 | 1647 |
| 1660 virtual Representation RequiredInputRepresentation(int index) { | 1648 virtual Representation RequiredInputRepresentation(int index) { |
| 1661 return Representation::Tagged(); | 1649 return Representation::Tagged(); |
| 1662 } | 1650 } |
| (...skipping 2290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3953 | 3941 |
| 3954 virtual HType CalculateInferredType(); | 3942 virtual HType CalculateInferredType(); |
| 3955 | 3943 |
| 3956 DECLARE_CONCRETE_INSTRUCTION(CompareGeneric) | 3944 DECLARE_CONCRETE_INSTRUCTION(CompareGeneric) |
| 3957 | 3945 |
| 3958 private: | 3946 private: |
| 3959 Token::Value token_; | 3947 Token::Value token_; |
| 3960 }; | 3948 }; |
| 3961 | 3949 |
| 3962 | 3950 |
| 3963 class HCompareIDAndBranch: public HTemplateControlInstruction<2, 2> { | 3951 class HCompareNumericAndBranch: public HTemplateControlInstruction<2, 2> { |
| 3964 public: | 3952 public: |
| 3965 HCompareIDAndBranch(HValue* left, HValue* right, Token::Value token) | 3953 HCompareNumericAndBranch(HValue* left, HValue* right, Token::Value token) |
| 3966 : token_(token) { | 3954 : token_(token) { |
| 3967 SetFlag(kFlexibleRepresentation); | 3955 SetFlag(kFlexibleRepresentation); |
| 3968 ASSERT(Token::IsCompareOp(token)); | 3956 ASSERT(Token::IsCompareOp(token)); |
| 3969 SetOperandAt(0, left); | 3957 SetOperandAt(0, left); |
| 3970 SetOperandAt(1, right); | 3958 SetOperandAt(1, right); |
| 3971 } | 3959 } |
| 3972 | 3960 |
| 3973 HValue* left() { return OperandAt(0); } | 3961 HValue* left() { return OperandAt(0); } |
| 3974 HValue* right() { return OperandAt(1); } | 3962 HValue* right() { return OperandAt(1); } |
| 3975 Token::Value token() const { return token_; } | 3963 Token::Value token() const { return token_; } |
| 3976 | 3964 |
| 3977 void set_observed_input_representation(Representation left, | 3965 void set_observed_input_representation(Representation left, |
| 3978 Representation right) { | 3966 Representation right) { |
| 3979 observed_input_representation_[0] = left; | 3967 observed_input_representation_[0] = left; |
| 3980 observed_input_representation_[1] = right; | 3968 observed_input_representation_[1] = right; |
| 3981 } | 3969 } |
| 3982 | 3970 |
| 3983 virtual void InferRepresentation(HInferRepresentationPhase* h_infer); | 3971 virtual void InferRepresentation(HInferRepresentationPhase* h_infer); |
| 3984 | 3972 |
| 3985 virtual Representation RequiredInputRepresentation(int index) { | 3973 virtual Representation RequiredInputRepresentation(int index) { |
| 3986 return representation(); | 3974 return representation(); |
| 3987 } | 3975 } |
| 3988 virtual Representation observed_input_representation(int index) { | 3976 virtual Representation observed_input_representation(int index) { |
| 3989 return observed_input_representation_[index]; | 3977 return observed_input_representation_[index]; |
| 3990 } | 3978 } |
| 3991 virtual void PrintDataTo(StringStream* stream); | 3979 virtual void PrintDataTo(StringStream* stream); |
| 3992 | 3980 |
| 3993 virtual void AddInformativeDefinitions(); | 3981 virtual void AddInformativeDefinitions(); |
| 3994 | 3982 |
| 3995 DECLARE_CONCRETE_INSTRUCTION(CompareIDAndBranch) | 3983 DECLARE_CONCRETE_INSTRUCTION(CompareNumericAndBranch) |
| 3996 | 3984 |
| 3997 private: | 3985 private: |
| 3998 Representation observed_input_representation_[2]; | 3986 Representation observed_input_representation_[2]; |
| 3999 Token::Value token_; | 3987 Token::Value token_; |
| 4000 }; | 3988 }; |
| 4001 | 3989 |
| 4002 | 3990 |
| 4003 class HCompareObjectEqAndBranch: public HTemplateControlInstruction<2, 2> { | 3991 class HCompareObjectEqAndBranch: public HTemplateControlInstruction<2, 2> { |
| 4004 public: | 3992 public: |
| 4005 HCompareObjectEqAndBranch(HValue* left, HValue* right) { | 3993 HCompareObjectEqAndBranch(HValue* left, HValue* right) { |
| (...skipping 2688 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6694 virtual bool IsDeletable() const { return true; } | 6682 virtual bool IsDeletable() const { return true; } |
| 6695 }; | 6683 }; |
| 6696 | 6684 |
| 6697 | 6685 |
| 6698 #undef DECLARE_INSTRUCTION | 6686 #undef DECLARE_INSTRUCTION |
| 6699 #undef DECLARE_CONCRETE_INSTRUCTION | 6687 #undef DECLARE_CONCRETE_INSTRUCTION |
| 6700 | 6688 |
| 6701 } } // namespace v8::internal | 6689 } } // namespace v8::internal |
| 6702 | 6690 |
| 6703 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ | 6691 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ |
| OLD | NEW |