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

Side by Side Diff: src/crankshaft/mips64/lithium-mips64.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/mips64/lithium-mips64.h ('k') | src/crankshaft/ppc/lithium-ppc.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/mips64/lithium-mips64.h" 5 #include "src/crankshaft/mips64/lithium-mips64.h"
6 6
7 #include <sstream> 7 #include <sstream>
8 8
9 #if V8_TARGET_ARCH_MIPS64 9 #if V8_TARGET_ARCH_MIPS64
10 10
(...skipping 2138 matching lines...) Expand 10 before | Expand all | Expand 10 after
2149 2149
2150 if (!instr->is_fixed_typed_array()) { 2150 if (!instr->is_fixed_typed_array()) {
2151 LOperand* obj = NULL; 2151 LOperand* obj = NULL;
2152 if (instr->representation().IsDouble()) { 2152 if (instr->representation().IsDouble()) {
2153 obj = UseRegister(instr->elements()); 2153 obj = UseRegister(instr->elements());
2154 } else { 2154 } else {
2155 DCHECK(instr->representation().IsSmiOrTagged() || 2155 DCHECK(instr->representation().IsSmiOrTagged() ||
2156 instr->representation().IsInteger32()); 2156 instr->representation().IsInteger32());
2157 obj = UseRegisterAtStart(instr->elements()); 2157 obj = UseRegisterAtStart(instr->elements());
2158 } 2158 }
2159 result = DefineAsRegister(new(zone()) LLoadKeyed(obj, key)); 2159 result = DefineAsRegister(new (zone()) LLoadKeyed(obj, key, nullptr));
2160 } else { 2160 } else {
2161 DCHECK( 2161 DCHECK(
2162 (instr->representation().IsInteger32() && 2162 (instr->representation().IsInteger32() &&
2163 !IsDoubleOrFloatElementsKind(elements_kind)) || 2163 !IsDoubleOrFloatElementsKind(elements_kind)) ||
2164 (instr->representation().IsDouble() && 2164 (instr->representation().IsDouble() &&
2165 IsDoubleOrFloatElementsKind(elements_kind))); 2165 IsDoubleOrFloatElementsKind(elements_kind)));
2166 LOperand* backing_store = UseRegister(instr->elements()); 2166 LOperand* backing_store = UseRegister(instr->elements());
2167 result = DefineAsRegister(new(zone()) LLoadKeyed(backing_store, key)); 2167 LOperand* backing_store_owner = UseAny(instr->backing_store_owner());
2168 result = DefineAsRegister(
2169 new (zone()) LLoadKeyed(backing_store, key, backing_store_owner));
2168 } 2170 }
2169 2171
2170 bool needs_environment; 2172 bool needs_environment;
2171 if (instr->is_fixed_typed_array()) { 2173 if (instr->is_fixed_typed_array()) {
2172 // see LCodeGen::DoLoadKeyedExternalArray 2174 // see LCodeGen::DoLoadKeyedExternalArray
2173 needs_environment = elements_kind == UINT32_ELEMENTS && 2175 needs_environment = elements_kind == UINT32_ELEMENTS &&
2174 !instr->CheckFlag(HInstruction::kUint32); 2176 !instr->CheckFlag(HInstruction::kUint32);
2175 } else { 2177 } else {
2176 // see LCodeGen::DoLoadKeyedFixedDoubleArray and 2178 // see LCodeGen::DoLoadKeyedFixedDoubleArray and
2177 // LCodeGen::DoLoadKeyedFixedArray 2179 // LCodeGen::DoLoadKeyedFixedArray
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
2223 object = UseTempRegister(instr->elements()); 2225 object = UseTempRegister(instr->elements());
2224 val = UseTempRegister(instr->value()); 2226 val = UseTempRegister(instr->value());
2225 key = UseTempRegister(instr->key()); 2227 key = UseTempRegister(instr->key());
2226 } else { 2228 } else {
2227 object = UseRegisterAtStart(instr->elements()); 2229 object = UseRegisterAtStart(instr->elements());
2228 val = UseRegisterAtStart(instr->value()); 2230 val = UseRegisterAtStart(instr->value());
2229 key = UseRegisterOrConstantAtStart(instr->key()); 2231 key = UseRegisterOrConstantAtStart(instr->key());
2230 } 2232 }
2231 } 2233 }
2232 2234
2233 return new(zone()) LStoreKeyed(object, key, val); 2235 return new (zone()) LStoreKeyed(object, key, val, nullptr);
2234 } 2236 }
2235 2237
2236 DCHECK( 2238 DCHECK(
2237 (instr->value()->representation().IsInteger32() && 2239 (instr->value()->representation().IsInteger32() &&
2238 !IsDoubleOrFloatElementsKind(instr->elements_kind())) || 2240 !IsDoubleOrFloatElementsKind(instr->elements_kind())) ||
2239 (instr->value()->representation().IsDouble() && 2241 (instr->value()->representation().IsDouble() &&
2240 IsDoubleOrFloatElementsKind(instr->elements_kind()))); 2242 IsDoubleOrFloatElementsKind(instr->elements_kind())));
2241 DCHECK(instr->elements()->representation().IsExternal()); 2243 DCHECK(instr->elements()->representation().IsExternal());
2242 LOperand* val = UseRegister(instr->value()); 2244 LOperand* val = UseRegister(instr->value());
2243 LOperand* key = UseRegisterOrConstantAtStart(instr->key()); 2245 LOperand* key = UseRegisterOrConstantAtStart(instr->key());
2244 LOperand* backing_store = UseRegister(instr->elements()); 2246 LOperand* backing_store = UseRegister(instr->elements());
2245 return new(zone()) LStoreKeyed(backing_store, key, val); 2247 LOperand* backing_store_owner = UseAny(instr->backing_store_owner());
2248 return new (zone()) LStoreKeyed(backing_store, key, val, backing_store_owner);
2246 } 2249 }
2247 2250
2248 2251
2249 LInstruction* LChunkBuilder::DoStoreKeyedGeneric(HStoreKeyedGeneric* instr) { 2252 LInstruction* LChunkBuilder::DoStoreKeyedGeneric(HStoreKeyedGeneric* instr) {
2250 LOperand* context = UseFixed(instr->context(), cp); 2253 LOperand* context = UseFixed(instr->context(), cp);
2251 LOperand* obj = 2254 LOperand* obj =
2252 UseFixed(instr->object(), StoreDescriptor::ReceiverRegister()); 2255 UseFixed(instr->object(), StoreDescriptor::ReceiverRegister());
2253 LOperand* key = UseFixed(instr->key(), StoreDescriptor::NameRegister()); 2256 LOperand* key = UseFixed(instr->key(), StoreDescriptor::NameRegister());
2254 LOperand* val = UseFixed(instr->value(), StoreDescriptor::ValueRegister()); 2257 LOperand* val = UseFixed(instr->value(), StoreDescriptor::ValueRegister());
2255 2258
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
2613 LAllocateBlockContext* result = 2616 LAllocateBlockContext* result =
2614 new(zone()) LAllocateBlockContext(context, function); 2617 new(zone()) LAllocateBlockContext(context, function);
2615 return MarkAsCall(DefineFixed(result, cp), instr); 2618 return MarkAsCall(DefineFixed(result, cp), instr);
2616 } 2619 }
2617 2620
2618 2621
2619 } // namespace internal 2622 } // namespace internal
2620 } // namespace v8 2623 } // namespace v8
2621 2624
2622 #endif // V8_TARGET_ARCH_MIPS64 2625 #endif // V8_TARGET_ARCH_MIPS64
OLDNEW
« no previous file with comments | « src/crankshaft/mips64/lithium-mips64.h ('k') | src/crankshaft/ppc/lithium-ppc.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698