| OLD | NEW |
| 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 <sstream> | 5 #include <sstream> |
| 6 | 6 |
| 7 #include "src/v8.h" | 7 #include "src/v8.h" |
| 8 | 8 |
| 9 #include "src/arm/lithium-codegen-arm.h" | 9 #include "src/arm/lithium-codegen-arm.h" |
| 10 #include "src/hydrogen-osr.h" | 10 #include "src/hydrogen-osr.h" |
| (...skipping 2216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2227 } else { | 2227 } else { |
| 2228 DCHECK( | 2228 DCHECK( |
| 2229 (instr->representation().IsInteger32() && | 2229 (instr->representation().IsInteger32() && |
| 2230 !IsDoubleOrFloatElementsKind(elements_kind)) || | 2230 !IsDoubleOrFloatElementsKind(elements_kind)) || |
| 2231 (instr->representation().IsDouble() && | 2231 (instr->representation().IsDouble() && |
| 2232 IsDoubleOrFloatElementsKind(elements_kind))); | 2232 IsDoubleOrFloatElementsKind(elements_kind))); |
| 2233 LOperand* backing_store = UseRegister(instr->elements()); | 2233 LOperand* backing_store = UseRegister(instr->elements()); |
| 2234 result = DefineAsRegister(new(zone()) LLoadKeyed(backing_store, key)); | 2234 result = DefineAsRegister(new(zone()) LLoadKeyed(backing_store, key)); |
| 2235 } | 2235 } |
| 2236 | 2236 |
| 2237 if ((instr->is_external() || instr->is_fixed_typed_array()) ? | 2237 bool needs_environment; |
| 2238 // see LCodeGen::DoLoadKeyedExternalArray | 2238 if (instr->is_external() || instr->is_fixed_typed_array()) { |
| 2239 ((elements_kind == EXTERNAL_UINT32_ELEMENTS || | 2239 // see LCodeGen::DoLoadKeyedExternalArray |
| 2240 elements_kind == UINT32_ELEMENTS) && | 2240 needs_environment = (elements_kind == EXTERNAL_UINT32_ELEMENTS || |
| 2241 !instr->CheckFlag(HInstruction::kUint32)) : | 2241 elements_kind == UINT32_ELEMENTS) && |
| 2242 // see LCodeGen::DoLoadKeyedFixedDoubleArray and | 2242 !instr->CheckFlag(HInstruction::kUint32); |
| 2243 // LCodeGen::DoLoadKeyedFixedArray | 2243 } else { |
| 2244 instr->RequiresHoleCheck()) { | 2244 // see LCodeGen::DoLoadKeyedFixedDoubleArray and |
| 2245 // LCodeGen::DoLoadKeyedFixedArray |
| 2246 needs_environment = |
| 2247 instr->RequiresHoleCheck() || |
| 2248 (instr->hole_mode() == CONVERT_HOLE_TO_UNDEFINED && info()->IsStub()); |
| 2249 } |
| 2250 |
| 2251 if (needs_environment) { |
| 2245 result = AssignEnvironment(result); | 2252 result = AssignEnvironment(result); |
| 2246 } | 2253 } |
| 2247 return result; | 2254 return result; |
| 2248 } | 2255 } |
| 2249 | 2256 |
| 2250 | 2257 |
| 2251 LInstruction* LChunkBuilder::DoLoadKeyedGeneric(HLoadKeyedGeneric* instr) { | 2258 LInstruction* LChunkBuilder::DoLoadKeyedGeneric(HLoadKeyedGeneric* instr) { |
| 2252 LOperand* context = UseFixed(instr->context(), cp); | 2259 LOperand* context = UseFixed(instr->context(), cp); |
| 2253 LOperand* object = | 2260 LOperand* object = |
| 2254 UseFixed(instr->object(), LoadDescriptor::ReceiverRegister()); | 2261 UseFixed(instr->object(), LoadDescriptor::ReceiverRegister()); |
| (...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2648 LInstruction* LChunkBuilder::DoAllocateBlockContext( | 2655 LInstruction* LChunkBuilder::DoAllocateBlockContext( |
| 2649 HAllocateBlockContext* instr) { | 2656 HAllocateBlockContext* instr) { |
| 2650 LOperand* context = UseFixed(instr->context(), cp); | 2657 LOperand* context = UseFixed(instr->context(), cp); |
| 2651 LOperand* function = UseRegisterAtStart(instr->function()); | 2658 LOperand* function = UseRegisterAtStart(instr->function()); |
| 2652 LAllocateBlockContext* result = | 2659 LAllocateBlockContext* result = |
| 2653 new(zone()) LAllocateBlockContext(context, function); | 2660 new(zone()) LAllocateBlockContext(context, function); |
| 2654 return MarkAsCall(DefineFixed(result, cp), instr); | 2661 return MarkAsCall(DefineFixed(result, cp), instr); |
| 2655 } | 2662 } |
| 2656 | 2663 |
| 2657 } } // namespace v8::internal | 2664 } } // namespace v8::internal |
| OLD | NEW |