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

Side by Side Diff: src/crankshaft/mips/lithium-mips.h

Issue 1493983004: [crankshaft] Loads and stores to typed arrays have to reference the backing store holder (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: updates Created 5 years 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
« no previous file with comments | « src/crankshaft/ia32/lithium-ia32.cc ('k') | src/crankshaft/mips/lithium-mips.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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_CRANKSHAFT_MIPS_LITHIUM_MIPS_H_ 5 #ifndef V8_CRANKSHAFT_MIPS_LITHIUM_MIPS_H_
6 #define V8_CRANKSHAFT_MIPS_LITHIUM_MIPS_H_ 6 #define V8_CRANKSHAFT_MIPS_LITHIUM_MIPS_H_
7 7
8 #include "src/crankshaft/hydrogen.h" 8 #include "src/crankshaft/hydrogen.h"
9 #include "src/crankshaft/lithium.h" 9 #include "src/crankshaft/lithium.h"
10 #include "src/crankshaft/lithium-allocator.h" 10 #include "src/crankshaft/lithium-allocator.h"
(...skipping 1547 matching lines...) Expand 10 before | Expand all | Expand 10 after
1558 1558
1559 class LLoadRoot final : public LTemplateInstruction<1, 0, 0> { 1559 class LLoadRoot final : public LTemplateInstruction<1, 0, 0> {
1560 public: 1560 public:
1561 DECLARE_CONCRETE_INSTRUCTION(LoadRoot, "load-root") 1561 DECLARE_CONCRETE_INSTRUCTION(LoadRoot, "load-root")
1562 DECLARE_HYDROGEN_ACCESSOR(LoadRoot) 1562 DECLARE_HYDROGEN_ACCESSOR(LoadRoot)
1563 1563
1564 Heap::RootListIndex index() const { return hydrogen()->index(); } 1564 Heap::RootListIndex index() const { return hydrogen()->index(); }
1565 }; 1565 };
1566 1566
1567 1567
1568 class LLoadKeyed final : public LTemplateInstruction<1, 2, 0> { 1568 class LLoadKeyed final : public LTemplateInstruction<1, 3, 0> {
1569 public: 1569 public:
1570 LLoadKeyed(LOperand* elements, LOperand* key) { 1570 LLoadKeyed(LOperand* elements, LOperand* key, LOperand* backing_store_owner) {
1571 inputs_[0] = elements; 1571 inputs_[0] = elements;
1572 inputs_[1] = key; 1572 inputs_[1] = key;
1573 inputs_[2] = backing_store_owner;
1573 } 1574 }
1574 1575
1575 LOperand* elements() { return inputs_[0]; } 1576 LOperand* elements() { return inputs_[0]; }
1576 LOperand* key() { return inputs_[1]; } 1577 LOperand* key() { return inputs_[1]; }
1578 LOperand* backing_store_owner() { return inputs_[2]; }
1577 ElementsKind elements_kind() const { 1579 ElementsKind elements_kind() const {
1578 return hydrogen()->elements_kind(); 1580 return hydrogen()->elements_kind();
1579 } 1581 }
1580 bool is_fixed_typed_array() const { 1582 bool is_fixed_typed_array() const {
1581 return hydrogen()->is_fixed_typed_array(); 1583 return hydrogen()->is_fixed_typed_array();
1582 } 1584 }
1583 1585
1584 DECLARE_CONCRETE_INSTRUCTION(LoadKeyed, "load-keyed") 1586 DECLARE_CONCRETE_INSTRUCTION(LoadKeyed, "load-keyed")
1585 DECLARE_HYDROGEN_ACCESSOR(LoadKeyed) 1587 DECLARE_HYDROGEN_ACCESSOR(LoadKeyed)
1586 1588
(...skipping 518 matching lines...) Expand 10 before | Expand all | Expand 10 after
2105 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") 2107 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic")
2106 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) 2108 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric)
2107 2109
2108 void PrintDataTo(StringStream* stream) override; 2110 void PrintDataTo(StringStream* stream) override;
2109 2111
2110 Handle<Object> name() const { return hydrogen()->name(); } 2112 Handle<Object> name() const { return hydrogen()->name(); }
2111 LanguageMode language_mode() { return hydrogen()->language_mode(); } 2113 LanguageMode language_mode() { return hydrogen()->language_mode(); }
2112 }; 2114 };
2113 2115
2114 2116
2115 class LStoreKeyed final : public LTemplateInstruction<0, 3, 0> { 2117 class LStoreKeyed final : public LTemplateInstruction<0, 4, 0> {
2116 public: 2118 public:
2117 LStoreKeyed(LOperand* object, LOperand* key, LOperand* value) { 2119 LStoreKeyed(LOperand* object, LOperand* key, LOperand* value,
2120 LOperand* backing_store_owner) {
2118 inputs_[0] = object; 2121 inputs_[0] = object;
2119 inputs_[1] = key; 2122 inputs_[1] = key;
2120 inputs_[2] = value; 2123 inputs_[2] = value;
2124 inputs_[3] = backing_store_owner;
2121 } 2125 }
2122 2126
2123 bool is_fixed_typed_array() const { 2127 bool is_fixed_typed_array() const {
2124 return hydrogen()->is_fixed_typed_array(); 2128 return hydrogen()->is_fixed_typed_array();
2125 } 2129 }
2126 LOperand* elements() { return inputs_[0]; } 2130 LOperand* elements() { return inputs_[0]; }
2127 LOperand* key() { return inputs_[1]; } 2131 LOperand* key() { return inputs_[1]; }
2128 LOperand* value() { return inputs_[2]; } 2132 LOperand* value() { return inputs_[2]; }
2133 LOperand* backing_store_owner() { return inputs_[3]; }
2129 ElementsKind elements_kind() const { 2134 ElementsKind elements_kind() const {
2130 return hydrogen()->elements_kind(); 2135 return hydrogen()->elements_kind();
2131 } 2136 }
2132 2137
2133 DECLARE_CONCRETE_INSTRUCTION(StoreKeyed, "store-keyed") 2138 DECLARE_CONCRETE_INSTRUCTION(StoreKeyed, "store-keyed")
2134 DECLARE_HYDROGEN_ACCESSOR(StoreKeyed) 2139 DECLARE_HYDROGEN_ACCESSOR(StoreKeyed)
2135 2140
2136 void PrintDataTo(StringStream* stream) override; 2141 void PrintDataTo(StringStream* stream) override;
2137 bool NeedsCanonicalization() { return hydrogen()->NeedsCanonicalization(); } 2142 bool NeedsCanonicalization() { return hydrogen()->NeedsCanonicalization(); }
2138 uint32_t base_offset() const { return hydrogen()->base_offset(); } 2143 uint32_t base_offset() const { return hydrogen()->base_offset(); }
(...skipping 613 matching lines...) Expand 10 before | Expand all | Expand 10 after
2752 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); 2757 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
2753 }; 2758 };
2754 2759
2755 #undef DECLARE_HYDROGEN_ACCESSOR 2760 #undef DECLARE_HYDROGEN_ACCESSOR
2756 #undef DECLARE_CONCRETE_INSTRUCTION 2761 #undef DECLARE_CONCRETE_INSTRUCTION
2757 2762
2758 } // namespace internal 2763 } // namespace internal
2759 } // namespace v8 2764 } // namespace v8
2760 2765
2761 #endif // V8_CRANKSHAFT_MIPS_LITHIUM_MIPS_H_ 2766 #endif // V8_CRANKSHAFT_MIPS_LITHIUM_MIPS_H_
OLDNEW
« no previous file with comments | « src/crankshaft/ia32/lithium-ia32.cc ('k') | src/crankshaft/mips/lithium-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698