| Index: src/crankshaft/x87/lithium-codegen-x87.cc | 
| diff --git a/src/crankshaft/x87/lithium-codegen-x87.cc b/src/crankshaft/x87/lithium-codegen-x87.cc | 
| index 3b9146147de1523dafe0105d7e5b556714419303..4f1a36a2659b43d4fc40a062ea391405b5c52902 100644 | 
| --- a/src/crankshaft/x87/lithium-codegen-x87.cc | 
| +++ b/src/crankshaft/x87/lithium-codegen-x87.cc | 
| @@ -3866,65 +3866,11 @@ void LCodeGen::DoMathFround(LMathFround* instr) { | 
|  | 
|  | 
| void LCodeGen::DoMathSqrt(LMathSqrt* instr) { | 
| -  X87Register input = ToX87Register(instr->value()); | 
| -  X87Register result_reg = ToX87Register(instr->result()); | 
| -  Register temp_result = ToRegister(instr->temp1()); | 
| -  Register temp = ToRegister(instr->temp2()); | 
| -  Label slow, done, smi, finish; | 
| -  DCHECK(result_reg.is(input)); | 
| - | 
| -  // Store input into Heap number and call runtime function kMathExpRT. | 
| -  if (FLAG_inline_new) { | 
| -    __ AllocateHeapNumber(temp_result, temp, no_reg, &slow); | 
| -    __ jmp(&done, Label::kNear); | 
| -  } | 
| - | 
| -  // Slow case: Call the runtime system to do the number allocation. | 
| -  __ bind(&slow); | 
| -  { | 
| -    // TODO(3095996): Put a valid pointer value in the stack slot where the | 
| -    // result register is stored, as this register is in the pointer map, but | 
| -    // contains an integer value. | 
| -    __ Move(temp_result, Immediate(0)); | 
| - | 
| -    // Preserve the value of all registers. | 
| -    PushSafepointRegistersScope scope(this); | 
| - | 
| -    __ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset)); | 
| -    __ CallRuntimeSaveDoubles(Runtime::kAllocateHeapNumber); | 
| -    RecordSafepointWithRegisters( | 
| -       instr->pointer_map(), 0, Safepoint::kNoLazyDeopt); | 
| -    __ StoreToSafepointRegisterSlot(temp_result, eax); | 
| -  } | 
| -  __ bind(&done); | 
| -  X87LoadForUsage(input); | 
| -  __ fstp_d(FieldOperand(temp_result, HeapNumber::kValueOffset)); | 
| - | 
| -  { | 
| -    // Preserve the value of all registers. | 
| -    PushSafepointRegistersScope scope(this); | 
| - | 
| -    __ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset)); | 
| -    __ push(temp_result); | 
| -    __ CallRuntimeSaveDoubles(Runtime::kMathSqrt); | 
| -    RecordSafepointWithRegisters(instr->pointer_map(), 1, | 
| -                                 Safepoint::kNoLazyDeopt); | 
| -    __ StoreToSafepointRegisterSlot(temp_result, eax); | 
| -  } | 
| -  X87PrepareToWrite(result_reg); | 
| -  // return value of MathExpRT is Smi or Heap Number. | 
| -  __ JumpIfSmi(temp_result, &smi); | 
| -  // Heap number(double) | 
| -  __ fld_d(FieldOperand(temp_result, HeapNumber::kValueOffset)); | 
| -  __ jmp(&finish); | 
| -  // SMI | 
| -  __ bind(&smi); | 
| -  __ SmiUntag(temp_result); | 
| -  __ push(temp_result); | 
| -  __ fild_s(MemOperand(esp, 0)); | 
| -  __ pop(temp_result); | 
| -  __ bind(&finish); | 
| -  X87CommitWrite(result_reg); | 
| +  X87Register input_reg = ToX87Register(instr->value()); | 
| +  __ X87SetFPUCW(0x027F); | 
| +  X87Fxch(input_reg); | 
| +  __ fsqrt(); | 
| +  __ X87SetFPUCW(0x037F); | 
| } | 
|  | 
|  | 
|  |