| 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 1782 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1793 protected: | 1793 protected: |
| 1794 virtual bool DataEquals(HValue* other) { return true; } | 1794 virtual bool DataEquals(HValue* other) { return true; } |
| 1795 }; | 1795 }; |
| 1796 | 1796 |
| 1797 | 1797 |
| 1798 class HPhi: public HValue { | 1798 class HPhi: public HValue { |
| 1799 public: | 1799 public: |
| 1800 explicit HPhi(int merged_index) | 1800 explicit HPhi(int merged_index) |
| 1801 : inputs_(2), | 1801 : inputs_(2), |
| 1802 merged_index_(merged_index), | 1802 merged_index_(merged_index), |
| 1803 phi_id_(-1) { | 1803 phi_id_(-1), |
| 1804 is_live_(false) { |
| 1804 for (int i = 0; i < Representation::kNumRepresentations; i++) { | 1805 for (int i = 0; i < Representation::kNumRepresentations; i++) { |
| 1805 non_phi_uses_[i] = 0; | 1806 non_phi_uses_[i] = 0; |
| 1806 indirect_uses_[i] = 0; | 1807 indirect_uses_[i] = 0; |
| 1807 } | 1808 } |
| 1808 ASSERT(merged_index >= 0); | 1809 ASSERT(merged_index >= 0); |
| 1809 set_representation(Representation::Tagged()); | 1810 set_representation(Representation::Tagged()); |
| 1810 SetFlag(kFlexibleRepresentation); | 1811 SetFlag(kFlexibleRepresentation); |
| 1811 } | 1812 } |
| 1812 | 1813 |
| 1813 virtual Representation InferredRepresentation() { | 1814 virtual Representation InferredRepresentation() { |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1827 | 1828 |
| 1828 virtual Range* InferRange(); | 1829 virtual Range* InferRange(); |
| 1829 virtual Representation RequiredInputRepresentation(int index) const { | 1830 virtual Representation RequiredInputRepresentation(int index) const { |
| 1830 return representation(); | 1831 return representation(); |
| 1831 } | 1832 } |
| 1832 virtual HType CalculateInferredType(); | 1833 virtual HType CalculateInferredType(); |
| 1833 virtual int OperandCount() { return inputs_.length(); } | 1834 virtual int OperandCount() { return inputs_.length(); } |
| 1834 virtual HValue* OperandAt(int index) { return inputs_[index]; } | 1835 virtual HValue* OperandAt(int index) { return inputs_[index]; } |
| 1835 HValue* GetRedundantReplacement(); | 1836 HValue* GetRedundantReplacement(); |
| 1836 void AddInput(HValue* value); | 1837 void AddInput(HValue* value); |
| 1838 bool HasRealUses(); |
| 1837 | 1839 |
| 1838 bool IsReceiver() { return merged_index_ == 0; } | 1840 bool IsReceiver() { return merged_index_ == 0; } |
| 1839 | 1841 |
| 1840 int merged_index() const { return merged_index_; } | 1842 int merged_index() const { return merged_index_; } |
| 1841 | 1843 |
| 1842 virtual const char* Mnemonic() const { return "phi"; } | 1844 virtual const char* Mnemonic() const { return "phi"; } |
| 1843 | 1845 |
| 1844 virtual void PrintTo(StringStream* stream); | 1846 virtual void PrintTo(StringStream* stream); |
| 1845 | 1847 |
| 1846 #ifdef DEBUG | 1848 #ifdef DEBUG |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1865 int tagged_indirect_uses() const { | 1867 int tagged_indirect_uses() const { |
| 1866 return indirect_uses_[Representation::kTagged]; | 1868 return indirect_uses_[Representation::kTagged]; |
| 1867 } | 1869 } |
| 1868 int int32_indirect_uses() const { | 1870 int int32_indirect_uses() const { |
| 1869 return indirect_uses_[Representation::kInteger32]; | 1871 return indirect_uses_[Representation::kInteger32]; |
| 1870 } | 1872 } |
| 1871 int double_indirect_uses() const { | 1873 int double_indirect_uses() const { |
| 1872 return indirect_uses_[Representation::kDouble]; | 1874 return indirect_uses_[Representation::kDouble]; |
| 1873 } | 1875 } |
| 1874 int phi_id() { return phi_id_; } | 1876 int phi_id() { return phi_id_; } |
| 1877 bool is_live() { return is_live_; } |
| 1878 void set_is_live(bool b) { is_live_ = b; } |
| 1875 | 1879 |
| 1876 protected: | 1880 protected: |
| 1877 virtual void DeleteFromGraph(); | 1881 virtual void DeleteFromGraph(); |
| 1878 virtual void InternalSetOperandAt(int index, HValue* value) { | 1882 virtual void InternalSetOperandAt(int index, HValue* value) { |
| 1879 inputs_[index] = value; | 1883 inputs_[index] = value; |
| 1880 } | 1884 } |
| 1881 | 1885 |
| 1882 private: | 1886 private: |
| 1883 ZoneList<HValue*> inputs_; | 1887 ZoneList<HValue*> inputs_; |
| 1884 int merged_index_; | 1888 int merged_index_; |
| 1885 | 1889 |
| 1886 int non_phi_uses_[Representation::kNumRepresentations]; | 1890 int non_phi_uses_[Representation::kNumRepresentations]; |
| 1887 int indirect_uses_[Representation::kNumRepresentations]; | 1891 int indirect_uses_[Representation::kNumRepresentations]; |
| 1888 int phi_id_; | 1892 int phi_id_; |
| 1893 bool is_live_; |
| 1889 }; | 1894 }; |
| 1890 | 1895 |
| 1891 | 1896 |
| 1892 class HArgumentsObject: public HTemplateInstruction<0> { | 1897 class HArgumentsObject: public HTemplateInstruction<0> { |
| 1893 public: | 1898 public: |
| 1894 HArgumentsObject() { | 1899 HArgumentsObject() { |
| 1895 set_representation(Representation::Tagged()); | 1900 set_representation(Representation::Tagged()); |
| 1896 SetFlag(kIsArguments); | 1901 SetFlag(kIsArguments); |
| 1897 } | 1902 } |
| 1898 | 1903 |
| (...skipping 1547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3446 HValue* object() { return left(); } | 3451 HValue* object() { return left(); } |
| 3447 HValue* key() { return right(); } | 3452 HValue* key() { return right(); } |
| 3448 }; | 3453 }; |
| 3449 | 3454 |
| 3450 #undef DECLARE_INSTRUCTION | 3455 #undef DECLARE_INSTRUCTION |
| 3451 #undef DECLARE_CONCRETE_INSTRUCTION | 3456 #undef DECLARE_CONCRETE_INSTRUCTION |
| 3452 | 3457 |
| 3453 } } // namespace v8::internal | 3458 } } // namespace v8::internal |
| 3454 | 3459 |
| 3455 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ | 3460 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ |
| OLD | NEW |