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

Side by Side Diff: src/arm64/lithium-arm64.h

Issue 398053002: Introduce FLAG_vector_ics. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: REBASE. Created 6 years, 5 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
« no previous file with comments | « src/arm64/ic-arm64.cc ('k') | src/arm64/lithium-arm64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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_
OLDNEW
« no previous file with comments | « src/arm64/ic-arm64.cc ('k') | src/arm64/lithium-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698