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

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

Issue 1511433005: Version 4.8.271.9 (cherry-pick) (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@4.8
Patch Set: 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/mips/lithium-mips.h ('k') | src/crankshaft/mips64/lithium-mips64.h » ('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 #include "src/crankshaft/mips/lithium-mips.h" 5 #include "src/crankshaft/mips/lithium-mips.h"
6 6
7 #include <sstream> 7 #include <sstream>
8 8
9 #if V8_TARGET_ARCH_MIPS 9 #if V8_TARGET_ARCH_MIPS
10 10
(...skipping 2134 matching lines...) Expand 10 before | Expand all | Expand 10 after
2145 LInstruction* result = NULL; 2145 LInstruction* result = NULL;
2146 2146
2147 if (!instr->is_fixed_typed_array()) { 2147 if (!instr->is_fixed_typed_array()) {
2148 LOperand* obj = NULL; 2148 LOperand* obj = NULL;
2149 if (instr->representation().IsDouble()) { 2149 if (instr->representation().IsDouble()) {
2150 obj = UseRegister(instr->elements()); 2150 obj = UseRegister(instr->elements());
2151 } else { 2151 } else {
2152 DCHECK(instr->representation().IsSmiOrTagged()); 2152 DCHECK(instr->representation().IsSmiOrTagged());
2153 obj = UseRegisterAtStart(instr->elements()); 2153 obj = UseRegisterAtStart(instr->elements());
2154 } 2154 }
2155 result = DefineAsRegister(new(zone()) LLoadKeyed(obj, key)); 2155 result = DefineAsRegister(new (zone()) LLoadKeyed(obj, key, nullptr));
2156 } else { 2156 } else {
2157 DCHECK( 2157 DCHECK(
2158 (instr->representation().IsInteger32() && 2158 (instr->representation().IsInteger32() &&
2159 !IsDoubleOrFloatElementsKind(elements_kind)) || 2159 !IsDoubleOrFloatElementsKind(elements_kind)) ||
2160 (instr->representation().IsDouble() && 2160 (instr->representation().IsDouble() &&
2161 IsDoubleOrFloatElementsKind(elements_kind))); 2161 IsDoubleOrFloatElementsKind(elements_kind)));
2162 LOperand* backing_store = UseRegister(instr->elements()); 2162 LOperand* backing_store = UseRegister(instr->elements());
2163 result = DefineAsRegister(new(zone()) LLoadKeyed(backing_store, key)); 2163 LOperand* backing_store_owner = UseAny(instr->backing_store_owner());
2164 result = DefineAsRegister(
2165 new (zone()) LLoadKeyed(backing_store, key, backing_store_owner));
2164 } 2166 }
2165 2167
2166 bool needs_environment; 2168 bool needs_environment;
2167 if (instr->is_fixed_typed_array()) { 2169 if (instr->is_fixed_typed_array()) {
2168 // see LCodeGen::DoLoadKeyedExternalArray 2170 // see LCodeGen::DoLoadKeyedExternalArray
2169 needs_environment = elements_kind == UINT32_ELEMENTS && 2171 needs_environment = elements_kind == UINT32_ELEMENTS &&
2170 !instr->CheckFlag(HInstruction::kUint32); 2172 !instr->CheckFlag(HInstruction::kUint32);
2171 } else { 2173 } else {
2172 // see LCodeGen::DoLoadKeyedFixedDoubleArray and 2174 // see LCodeGen::DoLoadKeyedFixedDoubleArray and
2173 // LCodeGen::DoLoadKeyedFixedArray 2175 // LCodeGen::DoLoadKeyedFixedArray
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
2218 object = UseTempRegister(instr->elements()); 2220 object = UseTempRegister(instr->elements());
2219 val = UseTempRegister(instr->value()); 2221 val = UseTempRegister(instr->value());
2220 key = UseTempRegister(instr->key()); 2222 key = UseTempRegister(instr->key());
2221 } else { 2223 } else {
2222 object = UseRegisterAtStart(instr->elements()); 2224 object = UseRegisterAtStart(instr->elements());
2223 val = UseRegisterAtStart(instr->value()); 2225 val = UseRegisterAtStart(instr->value());
2224 key = UseRegisterOrConstantAtStart(instr->key()); 2226 key = UseRegisterOrConstantAtStart(instr->key());
2225 } 2227 }
2226 } 2228 }
2227 2229
2228 return new(zone()) LStoreKeyed(object, key, val); 2230 return new (zone()) LStoreKeyed(object, key, val, nullptr);
2229 } 2231 }
2230 2232
2231 DCHECK( 2233 DCHECK(
2232 (instr->value()->representation().IsInteger32() && 2234 (instr->value()->representation().IsInteger32() &&
2233 !IsDoubleOrFloatElementsKind(instr->elements_kind())) || 2235 !IsDoubleOrFloatElementsKind(instr->elements_kind())) ||
2234 (instr->value()->representation().IsDouble() && 2236 (instr->value()->representation().IsDouble() &&
2235 IsDoubleOrFloatElementsKind(instr->elements_kind()))); 2237 IsDoubleOrFloatElementsKind(instr->elements_kind())));
2236 DCHECK(instr->elements()->representation().IsExternal()); 2238 DCHECK(instr->elements()->representation().IsExternal());
2237 LOperand* val = UseRegister(instr->value()); 2239 LOperand* val = UseRegister(instr->value());
2238 LOperand* key = UseRegisterOrConstantAtStart(instr->key()); 2240 LOperand* key = UseRegisterOrConstantAtStart(instr->key());
2239 LOperand* backing_store = UseRegister(instr->elements()); 2241 LOperand* backing_store = UseRegister(instr->elements());
2240 return new(zone()) LStoreKeyed(backing_store, key, val); 2242 LOperand* backing_store_owner = UseAny(instr->backing_store_owner());
2243 return new (zone()) LStoreKeyed(backing_store, key, val, backing_store_owner);
2241 } 2244 }
2242 2245
2243 2246
2244 LInstruction* LChunkBuilder::DoStoreKeyedGeneric(HStoreKeyedGeneric* instr) { 2247 LInstruction* LChunkBuilder::DoStoreKeyedGeneric(HStoreKeyedGeneric* instr) {
2245 LOperand* context = UseFixed(instr->context(), cp); 2248 LOperand* context = UseFixed(instr->context(), cp);
2246 LOperand* obj = 2249 LOperand* obj =
2247 UseFixed(instr->object(), StoreDescriptor::ReceiverRegister()); 2250 UseFixed(instr->object(), StoreDescriptor::ReceiverRegister());
2248 LOperand* key = UseFixed(instr->key(), StoreDescriptor::NameRegister()); 2251 LOperand* key = UseFixed(instr->key(), StoreDescriptor::NameRegister());
2249 LOperand* val = UseFixed(instr->value(), StoreDescriptor::ValueRegister()); 2252 LOperand* val = UseFixed(instr->value(), StoreDescriptor::ValueRegister());
2250 2253
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
2608 LOperand* function = UseRegisterAtStart(instr->function()); 2611 LOperand* function = UseRegisterAtStart(instr->function());
2609 LAllocateBlockContext* result = 2612 LAllocateBlockContext* result =
2610 new(zone()) LAllocateBlockContext(context, function); 2613 new(zone()) LAllocateBlockContext(context, function);
2611 return MarkAsCall(DefineFixed(result, cp), instr); 2614 return MarkAsCall(DefineFixed(result, cp), instr);
2612 } 2615 }
2613 2616
2614 } // namespace internal 2617 } // namespace internal
2615 } // namespace v8 2618 } // namespace v8
2616 2619
2617 #endif // V8_TARGET_ARCH_MIPS 2620 #endif // V8_TARGET_ARCH_MIPS
OLDNEW
« no previous file with comments | « src/crankshaft/mips/lithium-mips.h ('k') | src/crankshaft/mips64/lithium-mips64.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698