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