| Index: src/ia32/lithium-ia32.cc
|
| diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc
|
| index 27a5672901f0cd3287e61b768b26dac8c03d4294..d1f22bd220398cff6e94865dfee86473422f24c4 100644
|
| --- a/src/ia32/lithium-ia32.cc
|
| +++ b/src/ia32/lithium-ia32.cc
|
| @@ -1805,8 +1805,15 @@ LInstruction* LChunkBuilder::DoChange(HChange* instr) {
|
| LOperand* value = UseRegister(val);
|
| if (val->type().IsSmi()) {
|
| return DefineSameAsFirst(new(zone()) LDummyUse(value));
|
| + } else {
|
| + bool truncating = instr->CanTruncateToSmi();
|
| + LOperand* temp =
|
| + (CpuFeatures::IsSafeForSnapshot(SSE2) && !truncating)
|
| + ? FixedTemp(xmm1) : NULL;
|
| + LTaggedToSmi* res = new(zone()) LTaggedToSmi(UseRegister(val), temp);
|
| +
|
| + return AssignEnvironment(DefineSameAsFirst(res));
|
| }
|
| - return AssignEnvironment(DefineSameAsFirst(new(zone()) LCheckSmi(value)));
|
| } else {
|
| ASSERT(to.IsInteger32());
|
| HValue* val = instr->value();
|
|
|