| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_ARM64_LITHIUM_ARM64_H_ | 5 #ifndef V8_ARM64_LITHIUM_ARM64_H_ |
| 6 #define V8_ARM64_LITHIUM_ARM64_H_ | 6 #define V8_ARM64_LITHIUM_ARM64_H_ |
| 7 | 7 |
| 8 #include "src/hydrogen.h" | 8 #include "src/hydrogen.h" |
| 9 #include "src/lithium.h" | 9 #include "src/lithium.h" |
| 10 #include "src/lithium-allocator.h" | 10 #include "src/lithium-allocator.h" |
| (...skipping 1702 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1713 }; | 1713 }; |
| 1714 | 1714 |
| 1715 | 1715 |
| 1716 class LLoadGlobalCell V8_FINAL : public LTemplateInstruction<1, 0, 0> { | 1716 class LLoadGlobalCell V8_FINAL : public LTemplateInstruction<1, 0, 0> { |
| 1717 public: | 1717 public: |
| 1718 DECLARE_CONCRETE_INSTRUCTION(LoadGlobalCell, "load-global-cell") | 1718 DECLARE_CONCRETE_INSTRUCTION(LoadGlobalCell, "load-global-cell") |
| 1719 DECLARE_HYDROGEN_ACCESSOR(LoadGlobalCell) | 1719 DECLARE_HYDROGEN_ACCESSOR(LoadGlobalCell) |
| 1720 }; | 1720 }; |
| 1721 | 1721 |
| 1722 | 1722 |
| 1723 class LLoadGlobalGeneric V8_FINAL : public LTemplateInstruction<1, 2, 0> { | 1723 class LLoadGlobalGeneric V8_FINAL : public LTemplateInstruction<1, 2, 1> { |
| 1724 public: | 1724 public: |
| 1725 LLoadGlobalGeneric(LOperand* context, LOperand* global_object) { | 1725 LLoadGlobalGeneric(LOperand* context, LOperand* global_object, |
| 1726 LOperand* vector) { |
| 1726 inputs_[0] = context; | 1727 inputs_[0] = context; |
| 1727 inputs_[1] = global_object; | 1728 inputs_[1] = global_object; |
| 1729 temps_[0] = vector; |
| 1728 } | 1730 } |
| 1729 | 1731 |
| 1730 LOperand* context() { return inputs_[0]; } | 1732 LOperand* context() { return inputs_[0]; } |
| 1731 LOperand* global_object() { return inputs_[1]; } | 1733 LOperand* global_object() { return inputs_[1]; } |
| 1734 LOperand* temp_vector() { return temps_[0]; } |
| 1732 | 1735 |
| 1733 DECLARE_CONCRETE_INSTRUCTION(LoadGlobalGeneric, "load-global-generic") | 1736 DECLARE_CONCRETE_INSTRUCTION(LoadGlobalGeneric, "load-global-generic") |
| 1734 DECLARE_HYDROGEN_ACCESSOR(LoadGlobalGeneric) | 1737 DECLARE_HYDROGEN_ACCESSOR(LoadGlobalGeneric) |
| 1735 | 1738 |
| 1736 Handle<Object> name() const { return hydrogen()->name(); } | 1739 Handle<Object> name() const { return hydrogen()->name(); } |
| 1737 bool for_typeof() const { return hydrogen()->for_typeof(); } | 1740 bool for_typeof() const { return hydrogen()->for_typeof(); } |
| 1738 }; | 1741 }; |
| 1739 | 1742 |
| 1740 | 1743 |
| 1741 template<int T> | 1744 template<int T> |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1810 LLoadKeyed<1>(elements, key) { | 1813 LLoadKeyed<1>(elements, key) { |
| 1811 temps_[0] = temp; | 1814 temps_[0] = temp; |
| 1812 } | 1815 } |
| 1813 | 1816 |
| 1814 LOperand* temp() { return temps_[0]; } | 1817 LOperand* temp() { return temps_[0]; } |
| 1815 | 1818 |
| 1816 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFixedDouble, "load-keyed-fixed-double"); | 1819 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFixedDouble, "load-keyed-fixed-double"); |
| 1817 }; | 1820 }; |
| 1818 | 1821 |
| 1819 | 1822 |
| 1820 class LLoadKeyedGeneric V8_FINAL : public LTemplateInstruction<1, 3, 0> { | 1823 class LLoadKeyedGeneric V8_FINAL : public LTemplateInstruction<1, 3, 1> { |
| 1821 public: | 1824 public: |
| 1822 LLoadKeyedGeneric(LOperand* context, LOperand* object, LOperand* key) { | 1825 LLoadKeyedGeneric(LOperand* context, LOperand* object, LOperand* key, |
| 1826 LOperand* vector) { |
| 1823 inputs_[0] = context; | 1827 inputs_[0] = context; |
| 1824 inputs_[1] = object; | 1828 inputs_[1] = object; |
| 1825 inputs_[2] = key; | 1829 inputs_[2] = key; |
| 1830 temps_[0] = vector; |
| 1826 } | 1831 } |
| 1827 | 1832 |
| 1828 LOperand* context() { return inputs_[0]; } | 1833 LOperand* context() { return inputs_[0]; } |
| 1829 LOperand* object() { return inputs_[1]; } | 1834 LOperand* object() { return inputs_[1]; } |
| 1830 LOperand* key() { return inputs_[2]; } | 1835 LOperand* key() { return inputs_[2]; } |
| 1836 LOperand* temp_vector() { return temps_[0]; } |
| 1831 | 1837 |
| 1832 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic") | 1838 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic") |
| 1839 DECLARE_HYDROGEN_ACCESSOR(LoadKeyedGeneric) |
| 1833 }; | 1840 }; |
| 1834 | 1841 |
| 1835 | 1842 |
| 1836 class LLoadNamedGeneric V8_FINAL : public LTemplateInstruction<1, 2, 0> { | 1843 class LLoadNamedGeneric V8_FINAL : public LTemplateInstruction<1, 2, 1> { |
| 1837 public: | 1844 public: |
| 1838 LLoadNamedGeneric(LOperand* context, LOperand* object) { | 1845 LLoadNamedGeneric(LOperand* context, LOperand* object, LOperand* vector) { |
| 1839 inputs_[0] = context; | 1846 inputs_[0] = context; |
| 1840 inputs_[1] = object; | 1847 inputs_[1] = object; |
| 1848 temps_[0] = vector; |
| 1841 } | 1849 } |
| 1842 | 1850 |
| 1843 LOperand* context() { return inputs_[0]; } | 1851 LOperand* context() { return inputs_[0]; } |
| 1844 LOperand* object() { return inputs_[1]; } | 1852 LOperand* object() { return inputs_[1]; } |
| 1853 LOperand* temp_vector() { return temps_[0]; } |
| 1845 | 1854 |
| 1846 DECLARE_CONCRETE_INSTRUCTION(LoadNamedGeneric, "load-named-generic") | 1855 DECLARE_CONCRETE_INSTRUCTION(LoadNamedGeneric, "load-named-generic") |
| 1847 DECLARE_HYDROGEN_ACCESSOR(LoadNamedGeneric) | 1856 DECLARE_HYDROGEN_ACCESSOR(LoadNamedGeneric) |
| 1848 | 1857 |
| 1849 Handle<Object> name() const { return hydrogen()->name(); } | 1858 Handle<Object> name() const { return hydrogen()->name(); } |
| 1850 }; | 1859 }; |
| 1851 | 1860 |
| 1852 | 1861 |
| 1853 class LLoadRoot V8_FINAL : public LTemplateInstruction<1, 0, 0> { | 1862 class LLoadRoot V8_FINAL : public LTemplateInstruction<1, 0, 0> { |
| 1854 public: | 1863 public: |
| (...skipping 1294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3149 // An input operand in register, stack slot or a constant operand. | 3158 // An input operand in register, stack slot or a constant operand. |
| 3150 // Will not be moved to a register even if one is freely available. | 3159 // Will not be moved to a register even if one is freely available. |
| 3151 virtual MUST_USE_RESULT LOperand* UseAny(HValue* value); | 3160 virtual MUST_USE_RESULT LOperand* UseAny(HValue* value); |
| 3152 | 3161 |
| 3153 // Temporary operand that must be in a register. | 3162 // Temporary operand that must be in a register. |
| 3154 MUST_USE_RESULT LUnallocated* TempRegister(); | 3163 MUST_USE_RESULT LUnallocated* TempRegister(); |
| 3155 | 3164 |
| 3156 // Temporary operand that must be in a double register. | 3165 // Temporary operand that must be in a double register. |
| 3157 MUST_USE_RESULT LUnallocated* TempDoubleRegister(); | 3166 MUST_USE_RESULT LUnallocated* TempDoubleRegister(); |
| 3158 | 3167 |
| 3168 MUST_USE_RESULT LOperand* FixedTemp(Register reg); |
| 3169 |
| 3159 // Temporary operand that must be in a fixed double register. | 3170 // Temporary operand that must be in a fixed double register. |
| 3160 MUST_USE_RESULT LOperand* FixedTemp(DoubleRegister reg); | 3171 MUST_USE_RESULT LOperand* FixedTemp(DoubleRegister reg); |
| 3161 | 3172 |
| 3162 // Methods for setting up define-use relationships. | 3173 // Methods for setting up define-use relationships. |
| 3163 // Return the same instruction that they are passed. | 3174 // Return the same instruction that they are passed. |
| 3164 LInstruction* Define(LTemplateResultInstruction<1>* instr, | 3175 LInstruction* Define(LTemplateResultInstruction<1>* instr, |
| 3165 LUnallocated* result); | 3176 LUnallocated* result); |
| 3166 LInstruction* DefineAsRegister(LTemplateResultInstruction<1>* instr); | 3177 LInstruction* DefineAsRegister(LTemplateResultInstruction<1>* instr); |
| 3167 LInstruction* DefineAsSpilled(LTemplateResultInstruction<1>* instr, | 3178 LInstruction* DefineAsSpilled(LTemplateResultInstruction<1>* instr, |
| 3168 int index); | 3179 int index); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3239 | 3250 |
| 3240 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); | 3251 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); |
| 3241 }; | 3252 }; |
| 3242 | 3253 |
| 3243 #undef DECLARE_HYDROGEN_ACCESSOR | 3254 #undef DECLARE_HYDROGEN_ACCESSOR |
| 3244 #undef DECLARE_CONCRETE_INSTRUCTION | 3255 #undef DECLARE_CONCRETE_INSTRUCTION |
| 3245 | 3256 |
| 3246 } } // namespace v8::internal | 3257 } } // namespace v8::internal |
| 3247 | 3258 |
| 3248 #endif // V8_ARM64_LITHIUM_ARM64_H_ | 3259 #endif // V8_ARM64_LITHIUM_ARM64_H_ |
| OLD | NEW |