Commit ac125c6e authored by tkent@chromium.org's avatar tkent@chromium.org

Remove wtf_ceil.

According to a post by Darin Adler [1], OSX older than SnowLeopard had the
ceil() bug. We don't support the older versions of OSX.

This CL also renames LayoutUnit::wtf_ceil and Decimal::ceiling.

[1] https://bugs.webkit.org/show_bug.cgi?id=78032#c8

BUG=

Review URL: https://codereview.chromium.org/673583002

git-svn-id: svn://svn.chromium.org/blink/trunk@184171 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 6ded3be0
......@@ -760,7 +760,7 @@ void InputType::applyStep(const Decimal& current, int count, AnyStepHandling any
if (count < 0)
newValue = base + ((current - base) / step).floor() * step;
else if (count > 0)
newValue = base + ((current - base) / step).ceiling() * step;
newValue = base + ((current - base) / step).ceil() * step;
else
newValue = current;
......
......@@ -617,8 +617,7 @@ static bool isMultiplePowersOfTen(uint64_t coefficient, int n)
}
// Round toward positive infinity.
// Note: Mac ports defines ceil(x) as wtf_ceil(x), so we can't use name "ceil" here.
Decimal Decimal::ceiling() const
Decimal Decimal::ceil() const
{
if (isSpecial())
return *this;
......@@ -895,7 +894,7 @@ Decimal Decimal::nan()
Decimal Decimal::remainder(const Decimal& rhs) const
{
const Decimal quotient = *this / rhs;
return quotient.isSpecial() ? quotient : *this - (quotient.isNegative() ? quotient.ceiling() : quotient.floor()) * rhs;
return quotient.isSpecial() ? quotient : *this - (quotient.isNegative() ? quotient.ceil() : quotient.floor()) * rhs;
}
Decimal Decimal::round() const
......
......@@ -133,7 +133,7 @@ public:
bool isZero() const { return m_data.isZero(); }
Decimal abs() const;
Decimal ceiling() const;
Decimal ceil() const;
Decimal floor() const;
Decimal remainder(const Decimal&) const;
Decimal round() const;
......
......@@ -217,50 +217,50 @@ TEST_F(DecimalTest, AddSpecialValues)
EXPECT_EQ(NaN, MinusInfinity - NaN);
}
TEST_F(DecimalTest, Ceiling)
TEST_F(DecimalTest, Ceil)
{
EXPECT_EQ(Decimal(1), Decimal(1).ceiling());
EXPECT_EQ(Decimal(1), encode(1, -10, Positive).ceiling());
EXPECT_EQ(Decimal(2), encode(11, -1, Positive).ceiling());
EXPECT_EQ(Decimal(2), encode(13, -1, Positive).ceiling());
EXPECT_EQ(Decimal(2), encode(15, -1, Positive).ceiling());
EXPECT_EQ(Decimal(2), encode(19, -1, Positive).ceiling());
EXPECT_EQ(Decimal(2), encode(151, -2, Positive).ceiling());
EXPECT_EQ(Decimal(2), encode(101, -2, Positive).ceiling());
EXPECT_EQ(Decimal(1), encode(199, -3, Positive).ceiling());
EXPECT_EQ(Decimal(2), encode(199, -2, Positive).ceiling());
EXPECT_EQ(Decimal(3), encode(209, -2, Positive).ceiling());
EXPECT_EQ(Decimal(-1), Decimal(-1).ceiling());
EXPECT_EQ(Decimal(0), encode(1, -10, Negative).ceiling());
EXPECT_EQ(Decimal(-1), encode(11, -1, Negative).ceiling());
EXPECT_EQ(Decimal(-1), encode(13, -1, Negative).ceiling());
EXPECT_EQ(Decimal(-1), encode(15, -1, Negative).ceiling());
EXPECT_EQ(Decimal(-1), encode(19, -1, Negative).ceiling());
EXPECT_EQ(Decimal(-1), encode(151, -2, Negative).ceiling());
EXPECT_EQ(Decimal(-1), encode(101, -2, Negative).ceiling());
EXPECT_EQ(Decimal(0), encode(199, -3, Negative).ceiling());
EXPECT_EQ(Decimal(-1), encode(199, -2, Negative).ceiling());
EXPECT_EQ(Decimal(-2), encode(209, -2, Negative).ceiling());
EXPECT_EQ(Decimal(1), Decimal(1).ceil());
EXPECT_EQ(Decimal(1), encode(1, -10, Positive).ceil());
EXPECT_EQ(Decimal(2), encode(11, -1, Positive).ceil());
EXPECT_EQ(Decimal(2), encode(13, -1, Positive).ceil());
EXPECT_EQ(Decimal(2), encode(15, -1, Positive).ceil());
EXPECT_EQ(Decimal(2), encode(19, -1, Positive).ceil());
EXPECT_EQ(Decimal(2), encode(151, -2, Positive).ceil());
EXPECT_EQ(Decimal(2), encode(101, -2, Positive).ceil());
EXPECT_EQ(Decimal(1), encode(199, -3, Positive).ceil());
EXPECT_EQ(Decimal(2), encode(199, -2, Positive).ceil());
EXPECT_EQ(Decimal(3), encode(209, -2, Positive).ceil());
EXPECT_EQ(Decimal(-1), Decimal(-1).ceil());
EXPECT_EQ(Decimal(0), encode(1, -10, Negative).ceil());
EXPECT_EQ(Decimal(-1), encode(11, -1, Negative).ceil());
EXPECT_EQ(Decimal(-1), encode(13, -1, Negative).ceil());
EXPECT_EQ(Decimal(-1), encode(15, -1, Negative).ceil());
EXPECT_EQ(Decimal(-1), encode(19, -1, Negative).ceil());
EXPECT_EQ(Decimal(-1), encode(151, -2, Negative).ceil());
EXPECT_EQ(Decimal(-1), encode(101, -2, Negative).ceil());
EXPECT_EQ(Decimal(0), encode(199, -3, Negative).ceil());
EXPECT_EQ(Decimal(-1), encode(199, -2, Negative).ceil());
EXPECT_EQ(Decimal(-2), encode(209, -2, Negative).ceil());
}
TEST_F(DecimalTest, CeilingBigExponent)
{
EXPECT_EQ(encode(1, 1000, Positive), encode(1, 1000, Positive).ceiling());
EXPECT_EQ(encode(1, 1000, Negative), encode(1, 1000, Negative).ceiling());
EXPECT_EQ(encode(1, 1000, Positive), encode(1, 1000, Positive).ceil());
EXPECT_EQ(encode(1, 1000, Negative), encode(1, 1000, Negative).ceil());
}
TEST_F(DecimalTest, CeilingSmallExponent)
{
EXPECT_EQ(encode(1, 0, Positive), encode(1, -1000, Positive).ceiling());
EXPECT_EQ(encode(0, 0, Negative), encode(1, -1000, Negative).ceiling());
EXPECT_EQ(encode(1, 0, Positive), encode(1, -1000, Positive).ceil());
EXPECT_EQ(encode(0, 0, Negative), encode(1, -1000, Negative).ceil());
}
TEST_F(DecimalTest, CeilingSpecialValues)
{
EXPECT_EQ(Decimal::infinity(Positive), Decimal::infinity(Positive).ceiling());
EXPECT_EQ(Decimal::infinity(Negative), Decimal::infinity(Negative).ceiling());
EXPECT_EQ(Decimal::nan(), Decimal::nan().ceiling());
EXPECT_EQ(Decimal::infinity(Positive), Decimal::infinity(Positive).ceil());
EXPECT_EQ(Decimal::infinity(Negative), Decimal::infinity(Negative).ceil());
EXPECT_EQ(Decimal::nan(), Decimal::nan().ceil());
}
TEST_F(DecimalTest, Compare)
......
......@@ -131,11 +131,7 @@ public:
returnValue.setRawValue(::abs(m_value));
return returnValue;
}
#if OS(MACOSX)
int wtf_ceil() const
#else
int ceil() const
#endif
{
if (UNLIKELY(m_value >= INT_MAX - kFixedPointDenominator + 1))
return intMaxForLayoutUnit;
......
......@@ -53,15 +53,6 @@ const float piOverFourFloat = static_cast<float>(M_PI_4);
const double twoPiDouble = piDouble * 2.0;
const float twoPiFloat = piFloat * 2.0f;
#if OS(MACOSX)
// Work around a bug in the Mac OS X libc where ceil(-0.1) return +0.
inline double wtf_ceil(double x) { return copysign(ceil(x), x); }
#define ceil(x) wtf_ceil(x)
#endif
#if OS(OPENBSD)
namespace std {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment