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

Side by Side Diff: src/crankshaft/ppc/lithium-ppc.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/ppc/lithium-ppc.h ('k') | src/crankshaft/x64/lithium-x64.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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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/ppc/lithium-ppc.h" 5 #include "src/crankshaft/ppc/lithium-ppc.h"
6 6
7 #include <sstream> 7 #include <sstream>
8 8
9 #include "src/crankshaft/hydrogen-osr.h" 9 #include "src/crankshaft/hydrogen-osr.h"
10 #include "src/crankshaft/lithium-inl.h" 10 #include "src/crankshaft/lithium-inl.h"
(...skipping 2147 matching lines...) Expand 10 before | Expand all | Expand 10 after
2158 LOperand* key = UseRegisterOrConstantAtStart(instr->key()); 2158 LOperand* key = UseRegisterOrConstantAtStart(instr->key());
2159 LInstruction* result = NULL; 2159 LInstruction* result = NULL;
2160 2160
2161 if (!instr->is_fixed_typed_array()) { 2161 if (!instr->is_fixed_typed_array()) {
2162 LOperand* obj = NULL; 2162 LOperand* obj = NULL;
2163 if (instr->representation().IsDouble()) { 2163 if (instr->representation().IsDouble()) {
2164 obj = UseRegister(instr->elements()); 2164 obj = UseRegister(instr->elements());
2165 } else { 2165 } else {
2166 obj = UseRegisterAtStart(instr->elements()); 2166 obj = UseRegisterAtStart(instr->elements());
2167 } 2167 }
2168 result = DefineAsRegister(new (zone()) LLoadKeyed(obj, key)); 2168 result = DefineAsRegister(new (zone()) LLoadKeyed(obj, key, nullptr));
2169 } else { 2169 } else {
2170 DCHECK((instr->representation().IsInteger32() && 2170 DCHECK((instr->representation().IsInteger32() &&
2171 !IsDoubleOrFloatElementsKind(elements_kind)) || 2171 !IsDoubleOrFloatElementsKind(elements_kind)) ||
2172 (instr->representation().IsDouble() && 2172 (instr->representation().IsDouble() &&
2173 IsDoubleOrFloatElementsKind(elements_kind))); 2173 IsDoubleOrFloatElementsKind(elements_kind)));
2174 LOperand* backing_store = UseRegister(instr->elements()); 2174 LOperand* backing_store = UseRegister(instr->elements());
2175 result = DefineAsRegister(new (zone()) LLoadKeyed(backing_store, key)); 2175 LOperand* backing_store_owner = UseAny(instr->backing_store_owner());
2176 result = DefineAsRegister(
2177 new (zone()) LLoadKeyed(backing_store, key, backing_store_owner));
2176 } 2178 }
2177 2179
2178 bool needs_environment; 2180 bool needs_environment;
2179 if (instr->is_fixed_typed_array()) { 2181 if (instr->is_fixed_typed_array()) {
2180 // see LCodeGen::DoLoadKeyedExternalArray 2182 // see LCodeGen::DoLoadKeyedExternalArray
2181 needs_environment = elements_kind == UINT32_ELEMENTS && 2183 needs_environment = elements_kind == UINT32_ELEMENTS &&
2182 !instr->CheckFlag(HInstruction::kUint32); 2184 !instr->CheckFlag(HInstruction::kUint32);
2183 } else { 2185 } else {
2184 // see LCodeGen::DoLoadKeyedFixedDoubleArray and 2186 // see LCodeGen::DoLoadKeyedFixedDoubleArray and
2185 // LCodeGen::DoLoadKeyedFixedArray 2187 // LCodeGen::DoLoadKeyedFixedArray
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
2228 object = UseTempRegister(instr->elements()); 2230 object = UseTempRegister(instr->elements());
2229 val = UseTempRegister(instr->value()); 2231 val = UseTempRegister(instr->value());
2230 key = UseTempRegister(instr->key()); 2232 key = UseTempRegister(instr->key());
2231 } else { 2233 } else {
2232 object = UseRegisterAtStart(instr->elements()); 2234 object = UseRegisterAtStart(instr->elements());
2233 val = UseRegisterAtStart(instr->value()); 2235 val = UseRegisterAtStart(instr->value());
2234 key = UseRegisterOrConstantAtStart(instr->key()); 2236 key = UseRegisterOrConstantAtStart(instr->key());
2235 } 2237 }
2236 } 2238 }
2237 2239
2238 return new (zone()) LStoreKeyed(object, key, val); 2240 return new (zone()) LStoreKeyed(object, key, val, nullptr);
2239 } 2241 }
2240 2242
2241 DCHECK((instr->value()->representation().IsInteger32() && 2243 DCHECK((instr->value()->representation().IsInteger32() &&
2242 !IsDoubleOrFloatElementsKind(instr->elements_kind())) || 2244 !IsDoubleOrFloatElementsKind(instr->elements_kind())) ||
2243 (instr->value()->representation().IsDouble() && 2245 (instr->value()->representation().IsDouble() &&
2244 IsDoubleOrFloatElementsKind(instr->elements_kind()))); 2246 IsDoubleOrFloatElementsKind(instr->elements_kind())));
2245 DCHECK(instr->elements()->representation().IsExternal()); 2247 DCHECK(instr->elements()->representation().IsExternal());
2246 LOperand* val = UseRegister(instr->value()); 2248 LOperand* val = UseRegister(instr->value());
2247 LOperand* key = UseRegisterOrConstantAtStart(instr->key()); 2249 LOperand* key = UseRegisterOrConstantAtStart(instr->key());
2248 LOperand* backing_store = UseRegister(instr->elements()); 2250 LOperand* backing_store = UseRegister(instr->elements());
2249 return new (zone()) LStoreKeyed(backing_store, key, val); 2251 LOperand* backing_store_owner = UseAny(instr->backing_store_owner());
2252 return new (zone()) LStoreKeyed(backing_store, key, val, backing_store_owner);
2250 } 2253 }
2251 2254
2252 2255
2253 LInstruction* LChunkBuilder::DoStoreKeyedGeneric(HStoreKeyedGeneric* instr) { 2256 LInstruction* LChunkBuilder::DoStoreKeyedGeneric(HStoreKeyedGeneric* instr) {
2254 LOperand* context = UseFixed(instr->context(), cp); 2257 LOperand* context = UseFixed(instr->context(), cp);
2255 LOperand* obj = 2258 LOperand* obj =
2256 UseFixed(instr->object(), StoreDescriptor::ReceiverRegister()); 2259 UseFixed(instr->object(), StoreDescriptor::ReceiverRegister());
2257 LOperand* key = UseFixed(instr->key(), StoreDescriptor::NameRegister()); 2260 LOperand* key = UseFixed(instr->key(), StoreDescriptor::NameRegister());
2258 LOperand* val = UseFixed(instr->value(), StoreDescriptor::ValueRegister()); 2261 LOperand* val = UseFixed(instr->value(), StoreDescriptor::ValueRegister());
2259 2262
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
2609 LInstruction* LChunkBuilder::DoAllocateBlockContext( 2612 LInstruction* LChunkBuilder::DoAllocateBlockContext(
2610 HAllocateBlockContext* instr) { 2613 HAllocateBlockContext* instr) {
2611 LOperand* context = UseFixed(instr->context(), cp); 2614 LOperand* context = UseFixed(instr->context(), cp);
2612 LOperand* function = UseRegisterAtStart(instr->function()); 2615 LOperand* function = UseRegisterAtStart(instr->function());
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 } // namespace internal 2620 } // namespace internal
2618 } // namespace v8 2621 } // namespace v8
OLDNEW
« no previous file with comments | « src/crankshaft/ppc/lithium-ppc.h ('k') | src/crankshaft/x64/lithium-x64.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698