Reviewers: Lasse Reichstein, Description: Add number allocation call to runtime.cc instead of misusing UnaryMinus.
Please review this at http://codereview.chromium.org/2899004/show SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/arm/full-codegen-arm.cc M src/ia32/full-codegen-ia32.cc M src/runtime.h M src/x64/full-codegen-x64.cc Index: src/arm/full-codegen-arm.cc =================================================================== --- src/arm/full-codegen-arm.cc (revision 5036) +++ src/arm/full-codegen-arm.cc (working copy) @@ -2161,12 +2161,8 @@ __ jmp(&heapnumber_allocated); __ bind(&slow_allocate_heapnumber); - // To allocate a heap number, and ensure that it is not a smi, we - // call the runtime function FUnaryMinus on 0, returning the double - // -0.0. A new, distinct heap number is returned each time. - __ mov(r0, Operand(Smi::FromInt(0))); - __ push(r0); - __ CallRuntime(Runtime::kNumberUnaryMinus, 1); + // Allocate a heap number. + __ CallRuntime(Runtime::kNumberAlloc, 0); __ mov(r4, Operand(r0)); __ bind(&heapnumber_allocated); Index: src/ia32/full-codegen-ia32.cc =================================================================== --- src/ia32/full-codegen-ia32.cc (revision 5036) +++ src/ia32/full-codegen-ia32.cc (working copy) @@ -2242,11 +2242,8 @@ __ jmp(&heapnumber_allocated); __ bind(&slow_allocate_heapnumber); - // To allocate a heap number, and ensure that it is not a smi, we - // call the runtime function FUnaryMinus on 0, returning the double - // -0.0. A new, distinct heap number is returned each time. - __ push(Immediate(Smi::FromInt(0))); - __ CallRuntime(Runtime::kNumberUnaryMinus, 1); + // Allocate a heap number. + __ CallRuntime(Runtime::kNumberAlloc, 0); __ mov(edi, eax); __ bind(&heapnumber_allocated); Index: src/runtime.h =================================================================== --- src/runtime.h (revision 5036) +++ src/runtime.h (working copy) @@ -115,6 +115,7 @@ F(NumberDiv, 2, 1) \ F(NumberMod, 2, 1) \ F(NumberUnaryMinus, 1, 1) \ + F(NumberAlloc, 0, 1) \ \ F(StringAdd, 2, 1) \ F(StringBuilderConcat, 3, 1) \ Index: src/x64/full-codegen-x64.cc =================================================================== --- src/x64/full-codegen-x64.cc (revision 5036) +++ src/x64/full-codegen-x64.cc (working copy) @@ -2243,11 +2243,8 @@ __ jmp(&heapnumber_allocated); __ bind(&slow_allocate_heapnumber); - // To allocate a heap number, and ensure that it is not a smi, we - // call the runtime function FUnaryMinus on 0, returning the double - // -0.0. A new, distinct heap number is returned each time. - __ Push(Smi::FromInt(0)); - __ CallRuntime(Runtime::kNumberUnaryMinus, 1); + // Allocate a heap number. + __ CallRuntime(Runtime::kNumberAlloc, 0); __ movq(rbx, rax); __ bind(&heapnumber_allocated); -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
