Upgrade V8 to version 4.9.385.28
https://chromium.googlesource.com/v8/v8/+/4.9.385.28
FPIIM-449
Change-Id: I4b2e74289d4bf3667f2f3dc8aa2e541f63e26eb4
diff --git a/src/third_party/fdlibm/fdlibm.cc b/src/third_party/fdlibm/fdlibm.cc
index cc5dbc2..0ef2301 100644
--- a/src/third_party/fdlibm/fdlibm.cc
+++ b/src/third_party/fdlibm/fdlibm.cc
@@ -13,11 +13,14 @@
// modified significantly by Google Inc.
// Copyright 2014 the V8 project authors. All rights reserved.
-#include "src/v8.h"
-
-#include "src/double.h"
#include "src/third_party/fdlibm/fdlibm.h"
+#include <stdint.h>
+#include <cmath>
+#include <limits>
+
+#include "src/base/macros.h"
+#include "src/double.h"
namespace v8 {
namespace fdlibm {
@@ -26,75 +29,6 @@
inline double scalbn(double x, int y) { return _scalb(x, y); }
#endif // _MSC_VER
-const double MathConstants::constants[] = {
- 6.36619772367581382433e-01, // invpio2 0
- 1.57079632673412561417e+00, // pio2_1 1
- 6.07710050650619224932e-11, // pio2_1t 2
- 6.07710050630396597660e-11, // pio2_2 3
- 2.02226624879595063154e-21, // pio2_2t 4
- 2.02226624871116645580e-21, // pio2_3 5
- 8.47842766036889956997e-32, // pio2_3t 6
- -1.66666666666666324348e-01, // S1 7 coefficients for sin
- 8.33333333332248946124e-03, // 8
- -1.98412698298579493134e-04, // 9
- 2.75573137070700676789e-06, // 10
- -2.50507602534068634195e-08, // 11
- 1.58969099521155010221e-10, // S6 12
- 4.16666666666666019037e-02, // C1 13 coefficients for cos
- -1.38888888888741095749e-03, // 14
- 2.48015872894767294178e-05, // 15
- -2.75573143513906633035e-07, // 16
- 2.08757232129817482790e-09, // 17
- -1.13596475577881948265e-11, // C6 18
- 3.33333333333334091986e-01, // T0 19 coefficients for tan
- 1.33333333333201242699e-01, // 20
- 5.39682539762260521377e-02, // 21
- 2.18694882948595424599e-02, // 22
- 8.86323982359930005737e-03, // 23
- 3.59207910759131235356e-03, // 24
- 1.45620945432529025516e-03, // 25
- 5.88041240820264096874e-04, // 26
- 2.46463134818469906812e-04, // 27
- 7.81794442939557092300e-05, // 28
- 7.14072491382608190305e-05, // 29
- -1.85586374855275456654e-05, // 30
- 2.59073051863633712884e-05, // T12 31
- 7.85398163397448278999e-01, // pio4 32
- 3.06161699786838301793e-17, // pio4lo 33
- 6.93147180369123816490e-01, // ln2_hi 34
- 1.90821492927058770002e-10, // ln2_lo 35
- 6.666666666666666666e-01, // 2/3 36
- 6.666666666666735130e-01, // LP1 37 coefficients for log1p
- 3.999999999940941908e-01, // 38
- 2.857142874366239149e-01, // 39
- 2.222219843214978396e-01, // 40
- 1.818357216161805012e-01, // 41
- 1.531383769920937332e-01, // 42
- 1.479819860511658591e-01, // LP7 43
- 7.09782712893383973096e+02, // 44 overflow threshold for expm1
- 1.44269504088896338700e+00, // 1/ln2 45
- -3.33333333333331316428e-02, // Q1 46 coefficients for expm1
- 1.58730158725481460165e-03, // 47
- -7.93650757867487942473e-05, // 48
- 4.00821782732936239552e-06, // 49
- -2.01099218183624371326e-07, // Q5 50
- 710.4758600739439, // 51 overflow threshold sinh, cosh
- 4.34294481903251816668e-01, // ivln10 52 coefficients for log10
- 3.01029995663611771306e-01, // log10_2hi 53
- 3.69423907715893078616e-13, // log10_2lo 54
- 5.99999999999994648725e-01, // L1 55 coefficients for log2
- 4.28571428578550184252e-01, // 56
- 3.33333329818377432918e-01, // 57
- 2.72728123808534006489e-01, // 58
- 2.30660745775561754067e-01, // 59
- 2.06975017800338417784e-01, // L6 60
- 9.61796693925975554329e-01, // cp 61 2/(3*ln(2))
- 9.61796700954437255859e-01, // cp_h 62
- -7.02846165095275826516e-09, // cp_l 63
- 5.84962487220764160156e-01, // dp_h 64
- 1.35003920212974897128e-08 // dp_l 65
-};
-
// Table of constants for 2/pi, 396 Hex digits (476 decimal) of 2/pi
static const int two_over_pi[] = {
@@ -126,7 +60,7 @@
};
-int __kernel_rem_pio2(double* x, double* y, int e0, int nx) {
+INLINE(int __kernel_rem_pio2(double* x, double* y, int e0, int nx)) {
static const int32_t jk = 3;
double fw;
int32_t jx = nx - 1;
@@ -135,12 +69,12 @@
int32_t q0 = e0 - 24 * (jv + 1);
int32_t m = jx + jk;
- double f[10];
+ double f[20];
for (int i = 0, j = jv - jx; i <= m; i++, j++) {
f[i] = (j < 0) ? zero : static_cast<double>(two_over_pi[j]);
}
- double q[10];
+ double q[20];
for (int i = 0; i <= jk; i++) {
fw = 0.0;
for (int j = 0; j <= jx; j++) fw += x[j] * f[jx + i - j];
@@ -151,7 +85,7 @@
recompute:
- int32_t iq[10];
+ int32_t iq[20];
double z = q[jz];
for (int i = 0, j = jz; j > 0; i++, j--) {
fw = static_cast<double>(static_cast<int32_t>(twon24 * z));
@@ -242,7 +176,7 @@
fw *= twon24;
}
- double fq[10];
+ double fq[20];
for (int i = jz; i >= 0; i--) {
fw = 0.0;
for (int k = 0; k <= jk && k <= jz - i; k++) fw += PIo2[k] * q[i + k];
@@ -264,7 +198,7 @@
int32_t ix = hx & 0x7fffffff;
if (ix >= 0x7ff00000) {
- *y = base::OS::nan_value();
+ *y = std::numeric_limits<double>::quiet_NaN();
return 0;
}
@@ -290,5 +224,5 @@
}
return n;
}
-}
-} // namespace v8::internal
+} // namespace internal
+} // namespace v8