Index: src/ia32/code-stubs-ia32.cc |
diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc |
index 142abb5fd7babaf4529bb6e9dee821ec2310048b..1fdbaf11fd31ccdd4362e9ebe3500c18866b4565 100644 |
--- a/src/ia32/code-stubs-ia32.cc |
+++ b/src/ia32/code-stubs-ia32.cc |
@@ -1793,10 +1793,9 @@ void BinaryOpStub::GenerateInt32Stub(MacroAssembler* masm) { |
if (result_type_ <= BinaryOpIC::INT32) { |
__ cvttsd2si(ecx, Operand(xmm0)); |
__ cvtsi2sd(xmm2, ecx); |
- __ pcmpeqd(xmm2, xmm0); |
- __ movmskpd(ecx, xmm2); |
- __ test(ecx, Immediate(1)); |
- __ j(zero, ¬_int32); |
+ __ ucomisd(xmm0, xmm2); |
+ __ j(not_zero, ¬_int32); |
+ __ j(carry, ¬_int32); |
} |
GenerateHeapResultAllocation(masm, &call_runtime); |
__ movdbl(FieldOperand(eax, HeapNumber::kValueOffset), xmm0); |
@@ -3214,7 +3213,7 @@ void MathPowStub::Generate(MacroAssembler* masm) { |
__ movsd(double_scratch2, double_result); // Load double_exponent with 1. |
// Get absolute value of exponent. |
- Label no_neg, while_true, while_false; |
+ Label no_neg, while_true, no_multiply, while_false; |
__ test(scratch, scratch); |
__ j(positive, &no_neg, Label::kNear); |
__ neg(scratch); |
@@ -7206,11 +7205,6 @@ void RecordWriteStub::GenerateFixedRegStubsAheadOfTime() { |
} |
-bool CodeStub::CanUseFPRegisters() { |
- return CpuFeatures::IsSupported(SSE2); |
-} |
- |
- |
// Takes the input in 3 registers: address_ value_ and object_. A pointer to |
// the value has just been written into the object, now this stub makes sure |
// we keep the GC informed. The word in the object where the value has been |
@@ -7331,17 +7325,6 @@ void RecordWriteStub::CheckNeedsToInformIncrementalMarker( |
Mode mode) { |
Label object_is_black, need_incremental, need_incremental_pop_object; |
- __ mov(regs_.scratch0(), Immediate(~Page::kPageAlignmentMask)); |
- __ and_(regs_.scratch0(), regs_.object()); |
- __ mov(regs_.scratch1(), |
- Operand(regs_.scratch0(), |
- MemoryChunk::kWriteBarrierCounterOffset)); |
- __ sub(regs_.scratch1(), Immediate(1)); |
- __ mov(Operand(regs_.scratch0(), |
- MemoryChunk::kWriteBarrierCounterOffset), |
- regs_.scratch1()); |
- __ j(negative, &need_incremental); |
- |
// Let's look at the color of the object: If it is not black we don't have |
// to inform the incremental marker. |
__ JumpIfBlack(regs_.object(), |