| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 914 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 925 DECLARE_CONCRETE_INSTRUCTION(Throw, "throw") | 925 DECLARE_CONCRETE_INSTRUCTION(Throw, "throw") |
| 926 }; | 926 }; |
| 927 | 927 |
| 928 | 928 |
| 929 class HChange: public HUnaryOperation { | 929 class HChange: public HUnaryOperation { |
| 930 public: | 930 public: |
| 931 HChange(HValue* value, | 931 HChange(HValue* value, |
| 932 Representation from, | 932 Representation from, |
| 933 Representation to, | 933 Representation to, |
| 934 bool is_truncating) | 934 bool is_truncating) |
| 935 : HUnaryOperation(value), from_(from), to_(to) { | 935 : HUnaryOperation(value), from_(from) { |
| 936 ASSERT(!from.IsNone() && !to.IsNone()); | 936 ASSERT(!from.IsNone() && !to.IsNone()); |
| 937 ASSERT(!from.Equals(to)); | 937 ASSERT(!from.Equals(to)); |
| 938 set_representation(to); | 938 set_representation(to); |
| 939 SetFlag(kUseGVN); | 939 SetFlag(kUseGVN); |
| 940 if (is_truncating) SetFlag(kTruncatingToInt32); | 940 if (is_truncating) SetFlag(kTruncatingToInt32); |
| 941 if (from.IsInteger32() && to.IsTagged() && value->range() != NULL && | 941 if (from.IsInteger32() && to.IsTagged() && value->range() != NULL && |
| 942 value->range()->IsInSmiRange()) { | 942 value->range()->IsInSmiRange()) { |
| 943 set_type(HType::Smi()); | 943 set_type(HType::Smi()); |
| 944 } | 944 } |
| 945 } | 945 } |
| 946 | 946 |
| 947 virtual HValue* EnsureAndPropagateNotMinusZero(BitVector* visited); | 947 virtual HValue* EnsureAndPropagateNotMinusZero(BitVector* visited); |
| 948 | 948 |
| 949 Representation from() const { return from_; } | 949 Representation from() const { return from_; } |
| 950 Representation to() const { return to_; } | 950 Representation to() const { return representation(); } |
| 951 virtual Representation RequiredInputRepresentation(int index) const { | 951 virtual Representation RequiredInputRepresentation(int index) const { |
| 952 return from_; | 952 return from_; |
| 953 } | 953 } |
| 954 | 954 |
| 955 bool CanTruncateToInt32() const { return CheckFlag(kTruncatingToInt32); } | 955 bool CanTruncateToInt32() const { return CheckFlag(kTruncatingToInt32); } |
| 956 | 956 |
| 957 virtual void PrintDataTo(StringStream* stream); | 957 virtual void PrintDataTo(StringStream* stream); |
| 958 | 958 |
| 959 DECLARE_CONCRETE_INSTRUCTION(Change, | 959 DECLARE_CONCRETE_INSTRUCTION(Change, |
| 960 CanTruncateToInt32() ? "truncate" : "change") | 960 CanTruncateToInt32() ? "truncate" : "change") |
| 961 | 961 |
| 962 protected: | 962 protected: |
| 963 virtual bool DataEquals(HValue* other) { | 963 virtual bool DataEquals(HValue* other) { |
| 964 if (!other->IsChange()) return false; | 964 if (!other->IsChange()) return false; |
| 965 HChange* change = HChange::cast(other); | 965 HChange* change = HChange::cast(other); |
| 966 return value() == change->value() | 966 return value() == change->value() |
| 967 && to().Equals(change->to()); | 967 && to().Equals(change->to()); |
| 968 } | 968 } |
| 969 | 969 |
| 970 private: | 970 private: |
| 971 Representation from_; | 971 Representation from_; |
| 972 Representation to_; | |
| 973 }; | 972 }; |
| 974 | 973 |
| 975 | 974 |
| 976 class HSimulate: public HInstruction { | 975 class HSimulate: public HInstruction { |
| 977 public: | 976 public: |
| 978 HSimulate(int ast_id, int pop_count, int environment_length) | 977 HSimulate(int ast_id, int pop_count, int environment_length) |
| 979 : ast_id_(ast_id), | 978 : ast_id_(ast_id), |
| 980 pop_count_(pop_count), | 979 pop_count_(pop_count), |
| 981 environment_length_(environment_length), | 980 environment_length_(environment_length), |
| 982 values_(2), | 981 values_(2), |
| (...skipping 2636 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3619 HValue* object() { return left(); } | 3618 HValue* object() { return left(); } |
| 3620 HValue* key() { return right(); } | 3619 HValue* key() { return right(); } |
| 3621 }; | 3620 }; |
| 3622 | 3621 |
| 3623 #undef DECLARE_INSTRUCTION | 3622 #undef DECLARE_INSTRUCTION |
| 3624 #undef DECLARE_CONCRETE_INSTRUCTION | 3623 #undef DECLARE_CONCRETE_INSTRUCTION |
| 3625 | 3624 |
| 3626 } } // namespace v8::internal | 3625 } } // namespace v8::internal |
| 3627 | 3626 |
| 3628 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ | 3627 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ |
| OLD | NEW |