| Index: src/ia32/codegen-ia32.cc
|
| diff --git a/src/ia32/codegen-ia32.cc b/src/ia32/codegen-ia32.cc
|
| index 9477bf149af68bc90a24c5a5de6a40dee46894fe..45a968d6b0cdb8bbf0ef64b9056e25bd69e6a5ca 100644
|
| --- a/src/ia32/codegen-ia32.cc
|
| +++ b/src/ia32/codegen-ia32.cc
|
| @@ -434,24 +434,11 @@ void ElementsTransitionGenerator::GenerateSmiToDouble(
|
| // Allocate new FixedDoubleArray.
|
| // edx: receiver
|
| // edi: length of source FixedArray (smi-tagged)
|
| - __ lea(esi, Operand(edi,
|
| - times_4,
|
| - FixedDoubleArray::kHeaderSize + kPointerSize));
|
| - __ AllocateInNewSpace(esi, eax, ebx, no_reg, &gc_required, TAG_OBJECT);
|
| -
|
| - Label aligned, aligned_done;
|
| - __ test(eax, Immediate(kDoubleAlignmentMask - kHeapObjectTag));
|
| - __ j(zero, &aligned, Label::kNear);
|
| - __ mov(FieldOperand(eax, 0),
|
| - Immediate(masm->isolate()->factory()->one_pointer_filler_map()));
|
| - __ add(eax, Immediate(kPointerSize));
|
| - __ jmp(&aligned_done);
|
| -
|
| - __ bind(&aligned);
|
| - __ mov(Operand(eax, esi, times_1, -kPointerSize-1),
|
| - Immediate(masm->isolate()->factory()->one_pointer_filler_map()));
|
| -
|
| - __ bind(&aligned_done);
|
| + AllocationFlags flags =
|
| + static_cast<AllocationFlags>(TAG_OBJECT | DOUBLE_ALIGNMENT);
|
| + __ AllocateInNewSpace(FixedDoubleArray::kHeaderSize, times_8,
|
| + edi, REGISTER_VALUE_IS_SMI,
|
| + eax, ebx, no_reg, &gc_required, flags);
|
|
|
| // eax: destination FixedDoubleArray
|
| // edi: number of elements
|
|
|