Reviewers: Vyacheslav Egorov,

Description:
Second half of number alloc change accidentally omitted from
last change.

Please review this at http://codereview.chromium.org/2919001/show

SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/

Affected files:
  M     src/arm/codegen-arm.cc
  M     src/ia32/codegen-ia32.cc
  M     src/runtime.cc
  M     src/x64/codegen-x64.cc


Index: src/arm/codegen-arm.cc
===================================================================
--- src/arm/codegen-arm.cc      (revision 5037)
+++ src/arm/codegen-arm.cc      (working copy)
@@ -4870,12 +4870,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/codegen-ia32.cc
===================================================================
--- src/ia32/codegen-ia32.cc    (revision 5036)
+++ src/ia32/codegen-ia32.cc    (working copy)
@@ -6678,11 +6678,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.cc
===================================================================
--- src/runtime.cc      (revision 5036)
+++ src/runtime.cc      (working copy)
@@ -5608,6 +5608,14 @@
 }


+static Object* Runtime_NumberAlloc(Arguments args) {
+  NoHandleAllocation ha;
+  ASSERT(args.length() == 0);
+
+  return Heap::NumberFromDouble(9876543210.0);
+}
+
+
 static Object* Runtime_NumberDiv(Arguments args) {
   NoHandleAllocation ha;
   ASSERT(args.length() == 2);
Index: src/x64/codegen-x64.cc
===================================================================
--- src/x64/codegen-x64.cc      (revision 5036)
+++ src/x64/codegen-x64.cc      (working copy)
@@ -4664,11 +4664,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

Reply via email to