Chromium Code Reviews| Index: src/x64/lithium-x64.cc |
| diff --git a/src/x64/lithium-x64.cc b/src/x64/lithium-x64.cc |
| index 3ba0cae7ad9c4107d6deaf59d9423577516d91ba..fd9574b5db6939c7ab02f6eb4793412f356a1f2d 100644 |
| --- a/src/x64/lithium-x64.cc |
| +++ b/src/x64/lithium-x64.cc |
| @@ -2012,8 +2012,12 @@ LInstruction* LChunkBuilder::DoStoreKeyedGeneric(HStoreKeyedGeneric* instr) { |
| LInstruction* LChunkBuilder::DoTransitionElementsKind( |
| HTransitionElementsKind* instr) { |
| - if (instr->original_map()->elements_kind() == FAST_SMI_ONLY_ELEMENTS && |
| - instr->transitioned_map()->elements_kind() == FAST_ELEMENTS) { |
| + ElementsKind from_kind = instr->original_map()->elements_kind(); |
| + ElementsKind to_kind = instr->transitioned_map()->elements_kind(); |
| + bool simple_map_change = (GetHoleyElementsKind(from_kind) == to_kind) || |
|
Jakob Kummerow
2012/05/22 17:36:49
This computation is used often enough that it woul
danno
2012/05/23 14:25:36
Done.
|
| + (IsFastSmiElementsKind(from_kind) && |
| + IsFastObjectElementsKind(to_kind)); |
| + if (simple_map_change) { |
| LOperand* object = UseRegister(instr->object()); |
| LOperand* new_map_reg = TempRegister(); |
| LOperand* temp_reg = TempRegister(); |