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 "src/crankshaft/ia32/lithium-ia32.h" | 5 #include "src/crankshaft/ia32/lithium-ia32.h" |
6 | 6 |
7 #include <sstream> | 7 #include <sstream> |
8 | 8 |
9 #if V8_TARGET_ARCH_IA32 | 9 #if V8_TARGET_ARCH_IA32 |
10 | 10 |
(...skipping 2086 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2097 (instr->hole_mode() == CONVERT_HOLE_TO_UNDEFINED && info()->IsStub()); | 2097 (instr->hole_mode() == CONVERT_HOLE_TO_UNDEFINED && info()->IsStub()); |
2098 } | 2098 } |
2099 | 2099 |
2100 if (needs_environment) { | 2100 if (needs_environment) { |
2101 result = AssignEnvironment(result); | 2101 result = AssignEnvironment(result); |
2102 } | 2102 } |
2103 return result; | 2103 return result; |
2104 } | 2104 } |
2105 | 2105 |
2106 | 2106 |
2107 LInstruction* LChunkBuilder::DoLoadKeyedGeneric(HLoadKeyedGeneric* instr) { | |
2108 LOperand* context = UseFixed(instr->context(), esi); | |
2109 LOperand* object = | |
2110 UseFixed(instr->object(), LoadDescriptor::ReceiverRegister()); | |
2111 LOperand* key = UseFixed(instr->key(), LoadDescriptor::NameRegister()); | |
2112 LOperand* vector = FixedTemp(LoadWithVectorDescriptor::VectorRegister()); | |
2113 LLoadKeyedGeneric* result = | |
2114 new(zone()) LLoadKeyedGeneric(context, object, key, vector); | |
2115 return MarkAsCall(DefineFixed(result, eax), instr); | |
2116 } | |
2117 | |
2118 | |
2119 LOperand* LChunkBuilder::GetStoreKeyedValueOperand(HStoreKeyed* instr) { | 2107 LOperand* LChunkBuilder::GetStoreKeyedValueOperand(HStoreKeyed* instr) { |
2120 ElementsKind elements_kind = instr->elements_kind(); | 2108 ElementsKind elements_kind = instr->elements_kind(); |
2121 | 2109 |
2122 // Determine if we need a byte register in this case for the value. | 2110 // Determine if we need a byte register in this case for the value. |
2123 bool val_is_fixed_register = | 2111 bool val_is_fixed_register = |
2124 elements_kind == UINT8_ELEMENTS || | 2112 elements_kind == UINT8_ELEMENTS || |
2125 elements_kind == INT8_ELEMENTS || | 2113 elements_kind == INT8_ELEMENTS || |
2126 elements_kind == UINT8_CLAMPED_ELEMENTS; | 2114 elements_kind == UINT8_CLAMPED_ELEMENTS; |
2127 if (val_is_fixed_register) { | 2115 if (val_is_fixed_register) { |
2128 return UseFixed(instr->value(), eax); | 2116 return UseFixed(instr->value(), eax); |
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2500 LOperand* index = UseTempRegister(instr->index()); | 2488 LOperand* index = UseTempRegister(instr->index()); |
2501 LLoadFieldByIndex* load = new(zone()) LLoadFieldByIndex(object, index); | 2489 LLoadFieldByIndex* load = new(zone()) LLoadFieldByIndex(object, index); |
2502 LInstruction* result = DefineSameAsFirst(load); | 2490 LInstruction* result = DefineSameAsFirst(load); |
2503 return AssignPointerMap(result); | 2491 return AssignPointerMap(result); |
2504 } | 2492 } |
2505 | 2493 |
2506 } // namespace internal | 2494 } // namespace internal |
2507 } // namespace v8 | 2495 } // namespace v8 |
2508 | 2496 |
2509 #endif // V8_TARGET_ARCH_IA32 | 2497 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |