| 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 1208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1219 inputs_[0] = object; | 1219 inputs_[0] = object; |
| 1220 } | 1220 } |
| 1221 | 1221 |
| 1222 DECLARE_CONCRETE_INSTRUCTION(LoadExternalArrayPointer, | 1222 DECLARE_CONCRETE_INSTRUCTION(LoadExternalArrayPointer, |
| 1223 "load-external-array-pointer") | 1223 "load-external-array-pointer") |
| 1224 }; | 1224 }; |
| 1225 | 1225 |
| 1226 | 1226 |
| 1227 class LLoadKeyedFastElement: public LTemplateInstruction<1, 2, 0> { | 1227 class LLoadKeyedFastElement: public LTemplateInstruction<1, 2, 0> { |
| 1228 public: | 1228 public: |
| 1229 LLoadKeyedFastElement(LOperand* elements, LOperand* key) { | 1229 LLoadKeyedFastElement(LOperand* elements, |
| 1230 LOperand* key, |
| 1231 uint32_t additional_index) |
| 1232 : additional_index_(additional_index) { |
| 1230 inputs_[0] = elements; | 1233 inputs_[0] = elements; |
| 1231 inputs_[1] = key; | 1234 inputs_[1] = key; |
| 1232 } | 1235 } |
| 1233 | 1236 |
| 1234 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastElement, "load-keyed-fast-element") | 1237 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastElement, "load-keyed-fast-element") |
| 1235 DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastElement) | 1238 DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastElement) |
| 1236 | 1239 |
| 1237 LOperand* elements() { return inputs_[0]; } | 1240 LOperand* elements() { return inputs_[0]; } |
| 1238 LOperand* key() { return inputs_[1]; } | 1241 LOperand* key() { return inputs_[1]; } |
| 1242 uint32_t additional_index() const { return additional_index_; } |
| 1243 void set_additional_index(uint32_t additional_index) { |
| 1244 additional_index_ = additional_index; |
| 1245 } |
| 1246 |
| 1247 private: |
| 1248 uint32_t additional_index_; |
| 1239 }; | 1249 }; |
| 1240 | 1250 |
| 1241 | 1251 |
| 1242 class LLoadKeyedFastDoubleElement: public LTemplateInstruction<1, 2, 0> { | 1252 class LLoadKeyedFastDoubleElement: public LTemplateInstruction<1, 2, 0> { |
| 1243 public: | 1253 public: |
| 1244 LLoadKeyedFastDoubleElement(LOperand* elements, LOperand* key) { | 1254 LLoadKeyedFastDoubleElement(LOperand* elements, |
| 1255 LOperand* key, |
| 1256 uint32_t additional_index) |
| 1257 : additional_index_(additional_index) { |
| 1245 inputs_[0] = elements; | 1258 inputs_[0] = elements; |
| 1246 inputs_[1] = key; | 1259 inputs_[1] = key; |
| 1247 } | 1260 } |
| 1248 | 1261 |
| 1249 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastDoubleElement, | 1262 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastDoubleElement, |
| 1250 "load-keyed-fast-double-element") | 1263 "load-keyed-fast-double-element") |
| 1251 DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastDoubleElement) | 1264 DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastDoubleElement) |
| 1252 | 1265 |
| 1253 LOperand* elements() { return inputs_[0]; } | 1266 LOperand* elements() { return inputs_[0]; } |
| 1254 LOperand* key() { return inputs_[1]; } | 1267 LOperand* key() { return inputs_[1]; } |
| 1268 uint32_t additional_index() const { return additional_index_; } |
| 1269 void set_additional_index(uint32_t additional_index) { |
| 1270 additional_index_ = additional_index; |
| 1271 } |
| 1272 |
| 1273 private: |
| 1274 uint32_t additional_index_; |
| 1255 }; | 1275 }; |
| 1256 | 1276 |
| 1257 | 1277 |
| 1258 class LLoadKeyedSpecializedArrayElement: public LTemplateInstruction<1, 2, 0> { | 1278 class LLoadKeyedSpecializedArrayElement: public LTemplateInstruction<1, 2, 0> { |
| 1259 public: | 1279 public: |
| 1260 LLoadKeyedSpecializedArrayElement(LOperand* external_pointer, | 1280 LLoadKeyedSpecializedArrayElement(LOperand* external_pointer, |
| 1261 LOperand* key) { | 1281 LOperand* key, |
| 1282 uint32_t additional_index) |
| 1283 : additional_index_(additional_index) { |
| 1262 inputs_[0] = external_pointer; | 1284 inputs_[0] = external_pointer; |
| 1263 inputs_[1] = key; | 1285 inputs_[1] = key; |
| 1264 } | 1286 } |
| 1265 | 1287 |
| 1266 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedSpecializedArrayElement, | 1288 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedSpecializedArrayElement, |
| 1267 "load-keyed-specialized-array-element") | 1289 "load-keyed-specialized-array-element") |
| 1268 DECLARE_HYDROGEN_ACCESSOR(LoadKeyedSpecializedArrayElement) | 1290 DECLARE_HYDROGEN_ACCESSOR(LoadKeyedSpecializedArrayElement) |
| 1269 | 1291 |
| 1270 LOperand* external_pointer() { return inputs_[0]; } | 1292 LOperand* external_pointer() { return inputs_[0]; } |
| 1271 LOperand* key() { return inputs_[1]; } | 1293 LOperand* key() { return inputs_[1]; } |
| 1272 ElementsKind elements_kind() const { | 1294 ElementsKind elements_kind() const { |
| 1273 return hydrogen()->elements_kind(); | 1295 return hydrogen()->elements_kind(); |
| 1274 } | 1296 } |
| 1297 uint32_t additional_index() const { return additional_index_; } |
| 1298 void set_additional_index(uint32_t additional_index) { |
| 1299 additional_index_ = additional_index; |
| 1300 } |
| 1301 |
| 1302 private: |
| 1303 uint32_t additional_index_; |
| 1275 }; | 1304 }; |
| 1276 | 1305 |
| 1277 | 1306 |
| 1278 class LLoadKeyedGeneric: public LTemplateInstruction<1, 2, 0> { | 1307 class LLoadKeyedGeneric: public LTemplateInstruction<1, 2, 0> { |
| 1279 public: | 1308 public: |
| 1280 LLoadKeyedGeneric(LOperand* obj, LOperand* key) { | 1309 LLoadKeyedGeneric(LOperand* obj, LOperand* key) { |
| 1281 inputs_[0] = obj; | 1310 inputs_[0] = obj; |
| 1282 inputs_[1] = key; | 1311 inputs_[1] = key; |
| 1283 } | 1312 } |
| 1284 | 1313 |
| (...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1718 | 1747 |
| 1719 LOperand* object() { return inputs_[0]; } | 1748 LOperand* object() { return inputs_[0]; } |
| 1720 LOperand* value() { return inputs_[1]; } | 1749 LOperand* value() { return inputs_[1]; } |
| 1721 Handle<Object> name() const { return hydrogen()->name(); } | 1750 Handle<Object> name() const { return hydrogen()->name(); } |
| 1722 StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); } | 1751 StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); } |
| 1723 }; | 1752 }; |
| 1724 | 1753 |
| 1725 | 1754 |
| 1726 class LStoreKeyedFastElement: public LTemplateInstruction<0, 3, 0> { | 1755 class LStoreKeyedFastElement: public LTemplateInstruction<0, 3, 0> { |
| 1727 public: | 1756 public: |
| 1728 LStoreKeyedFastElement(LOperand* obj, LOperand* key, LOperand* val) { | 1757 LStoreKeyedFastElement(LOperand* obj, |
| 1758 LOperand* key, |
| 1759 LOperand* val, |
| 1760 uint32_t additional_index) |
| 1761 : additional_index_(additional_index) { |
| 1729 inputs_[0] = obj; | 1762 inputs_[0] = obj; |
| 1730 inputs_[1] = key; | 1763 inputs_[1] = key; |
| 1731 inputs_[2] = val; | 1764 inputs_[2] = val; |
| 1732 } | 1765 } |
| 1733 | 1766 |
| 1734 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastElement, | 1767 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastElement, |
| 1735 "store-keyed-fast-element") | 1768 "store-keyed-fast-element") |
| 1736 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastElement) | 1769 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastElement) |
| 1737 | 1770 |
| 1738 virtual void PrintDataTo(StringStream* stream); | 1771 virtual void PrintDataTo(StringStream* stream); |
| 1739 | 1772 |
| 1740 LOperand* object() { return inputs_[0]; } | 1773 LOperand* object() { return inputs_[0]; } |
| 1741 LOperand* key() { return inputs_[1]; } | 1774 LOperand* key() { return inputs_[1]; } |
| 1742 LOperand* value() { return inputs_[2]; } | 1775 LOperand* value() { return inputs_[2]; } |
| 1776 uint32_t additional_index() const { return additional_index_; } |
| 1777 void set_additional_index(uint32_t additional_index) { |
| 1778 additional_index_ = additional_index; |
| 1779 } |
| 1780 |
| 1781 private: |
| 1782 uint32_t additional_index_; |
| 1743 }; | 1783 }; |
| 1744 | 1784 |
| 1745 | 1785 |
| 1746 class LStoreKeyedFastDoubleElement: public LTemplateInstruction<0, 3, 0> { | 1786 class LStoreKeyedFastDoubleElement: public LTemplateInstruction<0, 3, 0> { |
| 1747 public: | 1787 public: |
| 1748 LStoreKeyedFastDoubleElement(LOperand* elements, | 1788 LStoreKeyedFastDoubleElement(LOperand* elements, |
| 1749 LOperand* key, | 1789 LOperand* key, |
| 1750 LOperand* val) { | 1790 LOperand* val, |
| 1791 uint32_t additional_index) |
| 1792 : additional_index_(additional_index) { |
| 1751 inputs_[0] = elements; | 1793 inputs_[0] = elements; |
| 1752 inputs_[1] = key; | 1794 inputs_[1] = key; |
| 1753 inputs_[2] = val; | 1795 inputs_[2] = val; |
| 1754 } | 1796 } |
| 1755 | 1797 |
| 1756 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastDoubleElement, | 1798 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastDoubleElement, |
| 1757 "store-keyed-fast-double-element") | 1799 "store-keyed-fast-double-element") |
| 1758 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastDoubleElement) | 1800 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastDoubleElement) |
| 1759 | 1801 |
| 1760 virtual void PrintDataTo(StringStream* stream); | 1802 virtual void PrintDataTo(StringStream* stream); |
| 1761 | 1803 |
| 1762 LOperand* elements() { return inputs_[0]; } | 1804 LOperand* elements() { return inputs_[0]; } |
| 1763 LOperand* key() { return inputs_[1]; } | 1805 LOperand* key() { return inputs_[1]; } |
| 1764 LOperand* value() { return inputs_[2]; } | 1806 LOperand* value() { return inputs_[2]; } |
| 1807 uint32_t additional_index() const { return additional_index_; } |
| 1808 void set_additional_index(uint32_t additional_index) { |
| 1809 additional_index_ = additional_index; |
| 1810 } |
| 1765 | 1811 |
| 1766 bool NeedsCanonicalization() { return hydrogen()->NeedsCanonicalization(); } | 1812 bool NeedsCanonicalization() { return hydrogen()->NeedsCanonicalization(); } |
| 1813 |
| 1814 private: |
| 1815 uint32_t additional_index_; |
| 1767 }; | 1816 }; |
| 1768 | 1817 |
| 1769 | 1818 |
| 1770 class LStoreKeyedGeneric: public LTemplateInstruction<0, 3, 0> { | 1819 class LStoreKeyedGeneric: public LTemplateInstruction<0, 3, 0> { |
| 1771 public: | 1820 public: |
| 1772 LStoreKeyedGeneric(LOperand* obj, LOperand* key, LOperand* val) { | 1821 LStoreKeyedGeneric(LOperand* obj, LOperand* key, LOperand* val) { |
| 1773 inputs_[0] = obj; | 1822 inputs_[0] = obj; |
| 1774 inputs_[1] = key; | 1823 inputs_[1] = key; |
| 1775 inputs_[2] = val; | 1824 inputs_[2] = val; |
| 1776 } | 1825 } |
| 1777 | 1826 |
| 1778 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic") | 1827 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic") |
| 1779 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedGeneric) | 1828 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedGeneric) |
| 1780 | 1829 |
| 1781 virtual void PrintDataTo(StringStream* stream); | 1830 virtual void PrintDataTo(StringStream* stream); |
| 1782 | 1831 |
| 1783 LOperand* object() { return inputs_[0]; } | 1832 LOperand* object() { return inputs_[0]; } |
| 1784 LOperand* key() { return inputs_[1]; } | 1833 LOperand* key() { return inputs_[1]; } |
| 1785 LOperand* value() { return inputs_[2]; } | 1834 LOperand* value() { return inputs_[2]; } |
| 1786 StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); } | 1835 StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); } |
| 1787 }; | 1836 }; |
| 1788 | 1837 |
| 1789 class LStoreKeyedSpecializedArrayElement: public LTemplateInstruction<0, 3, 0> { | 1838 class LStoreKeyedSpecializedArrayElement: public LTemplateInstruction<0, 3, 0> { |
| 1790 public: | 1839 public: |
| 1791 LStoreKeyedSpecializedArrayElement(LOperand* external_pointer, | 1840 LStoreKeyedSpecializedArrayElement(LOperand* external_pointer, |
| 1792 LOperand* key, | 1841 LOperand* key, |
| 1793 LOperand* val) { | 1842 LOperand* val, |
| 1843 uint32_t additional_index) |
| 1844 : additional_index_(additional_index) { |
| 1794 inputs_[0] = external_pointer; | 1845 inputs_[0] = external_pointer; |
| 1795 inputs_[1] = key; | 1846 inputs_[1] = key; |
| 1796 inputs_[2] = val; | 1847 inputs_[2] = val; |
| 1797 } | 1848 } |
| 1798 | 1849 |
| 1799 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedSpecializedArrayElement, | 1850 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedSpecializedArrayElement, |
| 1800 "store-keyed-specialized-array-element") | 1851 "store-keyed-specialized-array-element") |
| 1801 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedSpecializedArrayElement) | 1852 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedSpecializedArrayElement) |
| 1802 | 1853 |
| 1803 LOperand* external_pointer() { return inputs_[0]; } | 1854 LOperand* external_pointer() { return inputs_[0]; } |
| 1804 LOperand* key() { return inputs_[1]; } | 1855 LOperand* key() { return inputs_[1]; } |
| 1805 LOperand* value() { return inputs_[2]; } | 1856 LOperand* value() { return inputs_[2]; } |
| 1806 ElementsKind elements_kind() const { | 1857 ElementsKind elements_kind() const { |
| 1807 return hydrogen()->elements_kind(); | 1858 return hydrogen()->elements_kind(); |
| 1808 } | 1859 } |
| 1860 uint32_t additional_index() const { return additional_index_; } |
| 1861 void set_additional_index(uint32_t additional_index) { |
| 1862 additional_index_ = additional_index; |
| 1863 } |
| 1864 |
| 1865 private: |
| 1866 uint32_t additional_index_; |
| 1809 }; | 1867 }; |
| 1810 | 1868 |
| 1811 | 1869 |
| 1812 class LTransitionElementsKind: public LTemplateInstruction<1, 1, 2> { | 1870 class LTransitionElementsKind: public LTemplateInstruction<1, 1, 2> { |
| 1813 public: | 1871 public: |
| 1814 LTransitionElementsKind(LOperand* object, | 1872 LTransitionElementsKind(LOperand* object, |
| 1815 LOperand* new_map_temp, | 1873 LOperand* new_map_temp, |
| 1816 LOperand* temp_reg) { | 1874 LOperand* temp_reg) { |
| 1817 inputs_[0] = object; | 1875 inputs_[0] = object; |
| 1818 temps_[0] = new_map_temp; | 1876 temps_[0] = new_map_temp; |
| (...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2427 | 2485 |
| 2428 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); | 2486 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); |
| 2429 }; | 2487 }; |
| 2430 | 2488 |
| 2431 #undef DECLARE_HYDROGEN_ACCESSOR | 2489 #undef DECLARE_HYDROGEN_ACCESSOR |
| 2432 #undef DECLARE_CONCRETE_INSTRUCTION | 2490 #undef DECLARE_CONCRETE_INSTRUCTION |
| 2433 | 2491 |
| 2434 } } // namespace v8::internal | 2492 } } // namespace v8::internal |
| 2435 | 2493 |
| 2436 #endif // V8_ARM_LITHIUM_ARM_H_ | 2494 #endif // V8_ARM_LITHIUM_ARM_H_ |
| OLD | NEW |