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