| 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..140db8a71889ffcfc9e57ce7b472248ec9d94a52 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,28 +3213,21 @@ 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;
|
| __ test(scratch, scratch);
|
| __ j(positive, &no_neg, Label::kNear);
|
| __ neg(scratch);
|
| __ bind(&no_neg);
|
|
|
| - __ j(zero, &while_false, Label::kNear);
|
| - __ shr(scratch, 1);
|
| - // Above condition means CF==0 && ZF==0. This means that the
|
| - // bit that has been shifted out is 0 and the result is not 0.
|
| - __ j(above, &while_true, Label::kNear);
|
| - __ movsd(double_result, double_scratch);
|
| - __ j(zero, &while_false, Label::kNear);
|
| -
|
| __ bind(&while_true);
|
| __ shr(scratch, 1);
|
| - __ mulsd(double_scratch, double_scratch);
|
| - __ j(above, &while_true, Label::kNear);
|
| + __ j(not_carry, &no_multiply, Label::kNear);
|
| __ mulsd(double_result, double_scratch);
|
| + __ bind(&no_multiply);
|
| +
|
| + __ mulsd(double_scratch, double_scratch);
|
| __ j(not_zero, &while_true);
|
|
|
| - __ bind(&while_false);
|
| // scratch has the original value of the exponent - if the exponent is
|
| // negative, return 1/result.
|
| __ test(exponent, exponent);
|
| @@ -4178,15 +4170,15 @@ void RegExpConstructResultStub::Generate(MacroAssembler* masm) {
|
| Immediate(factory->fixed_array_map()));
|
| // Set length.
|
| __ mov(FieldOperand(ebx, FixedArray::kLengthOffset), ecx);
|
| - // Fill contents of fixed-array with undefined.
|
| + // Fill contents of fixed-array with the-hole.
|
| __ SmiUntag(ecx);
|
| - __ mov(edx, Immediate(factory->undefined_value()));
|
| + __ mov(edx, Immediate(factory->the_hole_value()));
|
| __ lea(ebx, FieldOperand(ebx, FixedArray::kHeaderSize));
|
| - // Fill fixed array elements with undefined.
|
| + // Fill fixed array elements with hole.
|
| // eax: JSArray.
|
| // ecx: Number of elements to fill.
|
| // ebx: Start of elements in FixedArray.
|
| - // edx: undefined.
|
| + // edx: the hole.
|
| Label loop;
|
| __ test(ecx, ecx);
|
| __ bind(&loop);
|
| @@ -7206,11 +7198,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 +7318,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(),
|
|
|