Bug 1416170 - Don't use long double constants. r?njn draft
authorMike Hommey <mh+mozilla@glandium.org>
Thu, 23 Nov 2017 11:58:14 +0900
changeset 702376 2c4cb191eef04a5a59a84ad45c5f33e273c82a61
parent 702247 960f50c2e0a991ab2ab313132e69fb2c96cb7866
child 741444 766887e039b483829eeb9bbb613df3a56e2aeedd
push id90460
push userbmo:mh+mozilla@glandium.org
push dateThu, 23 Nov 2017 03:01:55 +0000
reviewersnjn
bugs1416170
milestone59.0a1
Bug 1416170 - Don't use long double constants. r?njn Some platforms (at least powerpc64) apparently can't handle long double constants. So use double constants instead.
memory/build/Utils.h
memory/build/mozjemalloc.cpp
--- a/memory/build/Utils.h
+++ b/memory/build/Utils.h
@@ -67,19 +67,19 @@ constexpr size_t operator"" _MiB(unsigne
   return size_t(aNum) * 1024_KiB;
 }
 
 constexpr size_t operator"" _MiB(long double aNum)
 {
   return size_t(aNum * 1024_KiB);
 }
 
-constexpr long double operator""_percent(long double aPercent)
+constexpr double operator""_percent(long double aPercent)
 {
-  return aPercent / 100;
+  return double(aPercent) / 100;
 }
 
 // Helper for (fast) comparison of fractions without involving divisions or
 // floats.
 class Fraction
 {
 public:
   explicit constexpr Fraction(size_t aNumerator, size_t aDenominator)
--- a/memory/build/mozjemalloc.cpp
+++ b/memory/build/mozjemalloc.cpp
@@ -908,18 +908,18 @@ struct arena_bin_t
 
   // Offset of first region in a run for this bin's size class.
   uint32_t mRunFirstRegionOffset;
 
   // Current number of runs in this bin, full or otherwise.
   unsigned long mNumRuns;
 
   // Amount of overhead runs are allowed to have.
-  static constexpr long double kRunOverhead = 1.6_percent;
-  static constexpr long double kRunRelaxedOverhead = 2.4_percent;
+  static constexpr double kRunOverhead = 1.6_percent;
+  static constexpr double kRunRelaxedOverhead = 2.4_percent;
 
   // Initialize a bin for the given size class.
   // The generated run sizes, for a page size of 4 KiB, are:
   //   size|run       size|run       size|run       size|run
   //  class|size     class|size     class|size     class|size
   //     4   4 KiB      8   4 KiB     16   4 KiB     32   4 KiB
   //    48   4 KiB     64   4 KiB     80   4 KiB     96   4 KiB
   //   112   4 KiB    128   8 KiB    144   4 KiB    160   8 KiB