| Index: src/ia32/lithium-ia32.cc
|
| diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc
|
| index b3158685fcf40e3e60d7088b8af06e9e39fa0775..13897dbf777dc15405d84f2e3d1adef5abdaa789 100644
|
| --- a/src/ia32/lithium-ia32.cc
|
| +++ b/src/ia32/lithium-ia32.cc
|
| @@ -1944,21 +1944,12 @@ LInstruction* LChunkBuilder::DoChange(HChange* instr) {
|
| return DefineSameAsFirst(new(zone()) LSmiUntag(value, false));
|
| } else {
|
| bool truncating = instr->CanTruncateToInt32();
|
| - if (CpuFeatures::IsSafeForSnapshot(SSE2)) {
|
| - LOperand* value = UseRegister(instr->value());
|
| - LOperand* xmm_temp =
|
| - (truncating && CpuFeatures::IsSupported(SSE3))
|
| - ? NULL
|
| - : FixedTemp(xmm1);
|
| - LTaggedToI* res = new(zone()) LTaggedToI(value, xmm_temp);
|
| - return AssignEnvironment(DefineSameAsFirst(res));
|
| - } else {
|
| - LOperand* value = UseFixed(instr->value(), ecx);
|
| - LTaggedToINoSSE2* res =
|
| - new(zone()) LTaggedToINoSSE2(value, TempRegister(),
|
| - TempRegister(), TempRegister());
|
| - return AssignEnvironment(DefineFixed(res, ecx));
|
| - }
|
| + LOperand* value = UseRegister(instr->value());
|
| + LOperand* xmm_temp =
|
| + (CpuFeatures::IsSafeForSnapshot(SSE2) && !truncating)
|
| + ? FixedTemp(xmm1) : NULL;
|
| + LTaggedToI* res = new(zone()) LTaggedToI(value, xmm_temp);
|
| + return AssignEnvironment(DefineSameAsFirst(res));
|
| }
|
| }
|
| } else if (from.IsDouble()) {
|
| @@ -1978,7 +1969,7 @@ LInstruction* LChunkBuilder::DoChange(HChange* instr) {
|
| } else {
|
| ASSERT(to.IsInteger32());
|
| bool truncating = instr->CanTruncateToInt32();
|
| - bool needs_temp = truncating && !CpuFeatures::IsSupported(SSE3);
|
| + bool needs_temp = CpuFeatures::IsSafeForSnapshot(SSE2) && !truncating;
|
| LOperand* value = needs_temp ?
|
| UseTempRegister(instr->value()) : UseRegister(instr->value());
|
| LOperand* temp = needs_temp ? TempRegister() : NULL;
|
|
|