Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1703)

Side by Side Diff: src/hydrogen-instructions.h

Issue 6624061: Improve dead phi elimination.... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698