Revision: 10189
Author:   [email protected]
Date:     Wed Dec  7 01:44:31 2011
Log:      Tweak to shorten generated code in Math.pow.

Review URL: http://codereview.chromium.org/8834007
http://code.google.com/p/v8/source/detail?r=10189

Modified:
 /branches/bleeding_edge/src/ia32/code-stubs-ia32.cc
 /branches/bleeding_edge/src/x64/code-stubs-x64.cc

=======================================
--- /branches/bleeding_edge/src/ia32/code-stubs-ia32.cc Wed Dec 7 00:43:41 2011 +++ /branches/bleeding_edge/src/ia32/code-stubs-ia32.cc Wed Dec 7 01:44:31 2011
@@ -3130,11 +3130,9 @@
__ movsd(double_scratch2, double_result); // Load double_exponent with 1.

   // Get absolute value of exponent.
-  Label no_neg, while_true, no_multiply;
-  __ cmp(exponent, 0);
-  __ j(greater_equal, &no_neg, Label::kNear);
-  __ neg(exponent);
-  __ bind(&no_neg);
+  Label while_true, no_multiply;
+  const uint32_t kClearSignBitMask = 0x7FFFFFFF;
+  __ and_(exponent, Immediate(kClearSignBitMask));

   __ bind(&while_true);
   __ shr(exponent, 1);
=======================================
--- /branches/bleeding_edge/src/x64/code-stubs-x64.cc Wed Dec 7 00:34:27 2011 +++ /branches/bleeding_edge/src/x64/code-stubs-x64.cc Wed Dec 7 01:44:31 2011
@@ -2181,11 +2181,9 @@
__ movsd(double_scratch2, double_result); // Load double_exponent with 1.

   // Get absolute value of exponent.
-  Label no_neg, while_true, no_multiply;
-  __ cmpl(scratch, Immediate(0));
-  __ j(positive, &no_neg, Label::kNear);
-  __ negl(scratch);
-  __ bind(&no_neg);
+  Label while_true, no_multiply;
+  const uint32_t kClearSignBitMask = 0x7FFFFFFF;
+  __ andl(scratch, Immediate(kClearSignBitMask));

   __ bind(&while_true);
   __ shrl(scratch, Immediate(1));

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to