| 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 1880 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1891 return Representation::Tagged(); | 1891 return Representation::Tagged(); |
| 1892 } | 1892 } |
| 1893 | 1893 |
| 1894 DECLARE_CONCRETE_INSTRUCTION(LoadExternalArrayPointer) | 1894 DECLARE_CONCRETE_INSTRUCTION(LoadExternalArrayPointer) |
| 1895 | 1895 |
| 1896 protected: | 1896 protected: |
| 1897 virtual bool DataEquals(HValue* other) { return true; } | 1897 virtual bool DataEquals(HValue* other) { return true; } |
| 1898 }; | 1898 }; |
| 1899 | 1899 |
| 1900 | 1900 |
| 1901 class HCheckMap: public HUnaryOperation { | 1901 class HCheckMap: public HTemplateInstruction<2> { |
| 1902 public: | 1902 public: |
| 1903 HCheckMap(HValue* value, Handle<Map> map) | 1903 HCheckMap(HValue* value, Handle<Map> map, HValue* typecheck = NULL) |
| 1904 : HUnaryOperation(value), map_(map) { | 1904 : map_(map) { |
| 1905 SetOperandAt(0, value); |
| 1906 // If callers don't depend on a typecheck, they can pass in NULL. In that |
| 1907 // case we use a copy of the |value| argument as a dummy value. |
| 1908 SetOperandAt(1, typecheck != NULL ? typecheck : value); |
| 1905 set_representation(Representation::Tagged()); | 1909 set_representation(Representation::Tagged()); |
| 1906 SetFlag(kUseGVN); | 1910 SetFlag(kUseGVN); |
| 1907 SetFlag(kDependsOnMaps); | 1911 SetFlag(kDependsOnMaps); |
| 1908 } | 1912 } |
| 1909 | 1913 |
| 1910 virtual Representation RequiredInputRepresentation(int index) const { | 1914 virtual Representation RequiredInputRepresentation(int index) const { |
| 1911 return Representation::Tagged(); | 1915 return Representation::Tagged(); |
| 1912 } | 1916 } |
| 1913 virtual void PrintDataTo(StringStream* stream); | 1917 virtual void PrintDataTo(StringStream* stream); |
| 1914 virtual HType CalculateInferredType(); | 1918 virtual HType CalculateInferredType(); |
| 1915 | 1919 |
| 1920 HValue* value() { return OperandAt(0); } |
| 1916 Handle<Map> map() const { return map_; } | 1921 Handle<Map> map() const { return map_; } |
| 1917 | 1922 |
| 1918 DECLARE_CONCRETE_INSTRUCTION(CheckMap) | 1923 DECLARE_CONCRETE_INSTRUCTION(CheckMap) |
| 1919 | 1924 |
| 1920 protected: | 1925 protected: |
| 1921 virtual bool DataEquals(HValue* other) { | 1926 virtual bool DataEquals(HValue* other) { |
| 1922 HCheckMap* b = HCheckMap::cast(other); | 1927 HCheckMap* b = HCheckMap::cast(other); |
| 1923 return map_.is_identical_to(b->map()); | 1928 return map_.is_identical_to(b->map()); |
| 1924 } | 1929 } |
| 1925 | 1930 |
| (...skipping 2259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4185 | 4190 |
| 4186 DECLARE_CONCRETE_INSTRUCTION(In) | 4191 DECLARE_CONCRETE_INSTRUCTION(In) |
| 4187 }; | 4192 }; |
| 4188 | 4193 |
| 4189 #undef DECLARE_INSTRUCTION | 4194 #undef DECLARE_INSTRUCTION |
| 4190 #undef DECLARE_CONCRETE_INSTRUCTION | 4195 #undef DECLARE_CONCRETE_INSTRUCTION |
| 4191 | 4196 |
| 4192 } } // namespace v8::internal | 4197 } } // namespace v8::internal |
| 4193 | 4198 |
| 4194 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ | 4199 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ |
| OLD | NEW |