Reviewers: Michael Starzinger,

Message:
PTAL.

Description:
Tweak to shorten generated code in Math.pow.


Please review this at http://codereview.chromium.org/8834007/

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

Affected files:
  M src/ia32/code-stubs-ia32.cc
  M src/x64/code-stubs-x64.cc


Index: src/ia32/code-stubs-ia32.cc
diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc
index d87a439007e6a1f89525dc72571094742e62f373..eda2d648ee7a3d56fe63419a2034b592963ba7e8 100644
--- a/src/ia32/code-stubs-ia32.cc
+++ b/src/ia32/code-stubs-ia32.cc
@@ -3131,10 +3131,8 @@ void MathPowStub::Generate(MacroAssembler* masm) {

   // 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);
+  const uint32_t kClearSignBitMask = 0x7FFFFFFF;
+  __ and_(exponent, Immediate(kClearSignBitMask));

   __ bind(&while_true);
   __ shr(exponent, 1);
Index: src/x64/code-stubs-x64.cc
diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc
index a617d521f3378c01418bcbe38c4993399585bbaf..46a5487c7149c4279267252b5ecf2e74762fe8fc 100644
--- a/src/x64/code-stubs-x64.cc
+++ b/src/x64/code-stubs-x64.cc
@@ -2181,11 +2181,9 @@ 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, 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