The "fast" implementation of Math.exp() and Math.tanh() emits ARMv7
movt/movw instructions on ARMv6 (notably, the original Raspberry Pi.)
Disable fast math for now. The adventurous can enable it again with
the --fast_math switch.
PR-URL: https://github.com/iojs/io.js/pull/1398
Refs: https://github.com/iojs/io.js/issues/1376
Reviewed-By: Roman Reiss <me@silverwind.io>
V8-Bug: https://code.google.com/p/v8/issues/detail?id=4019
DispatchDebugMessagesAsyncCallback);
uv_unref(reinterpret_cast<uv_handle_t*>(&dispatch_debug_messages_async));
+#if defined(__arm__)
+ // See https://github.com/iojs/io.js/issues/1376
+ // and https://code.google.com/p/v8/issues/detail?id=4019
+ // TODO(bnoordhuis): Remove test/parallel/test-arm-math-exp-regress-1376.js
+ // and this workaround when v8:4019 has been fixed and the patch back-ported.
+ V8::SetFlagsFromString("--nofast_math", sizeof("--nofast_math") - 1);
+#endif
+
#if defined(NODE_V8_OPTIONS)
// Should come before the call to V8::SetFlagsFromCommandLine()
// so the user can disable a flag --foo at run-time by passing
--- /dev/null
+// See https://github.com/iojs/io.js/issues/1376
+// and https://code.google.com/p/v8/issues/detail?id=4019
+
+Math.abs(-0.5);
+Math.acos(-0.5);
+Math.acosh(-0.5);
+Math.asin(-0.5);
+Math.asinh(-0.5);
+Math.atan(-0.5);
+Math.atanh(-0.5);
+Math.cbrt(-0.5);
+Math.ceil(-0.5);
+Math.cos(-0.5);
+Math.cosh(-0.5);
+Math.exp(-0.5);
+Math.expm1(-0.5);
+Math.floor(-0.5);
+Math.fround(-0.5);
+Math.log(-0.5);
+Math.log10(-0.5);
+Math.log1p(-0.5);
+Math.log2(-0.5);
+Math.round(-0.5);
+Math.sign(-0.5);
+Math.sin(-0.5);
+Math.sinh(-0.5);
+Math.sqrt(-0.5);
+Math.tan(-0.5);
+Math.tanh(-0.5);
+Math.trunc(-0.5);