aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2014-01-08 16:11:23 -0800
committerAlon Zakai <alonzakai@gmail.com>2014-01-08 16:11:23 -0800
commitbe066182974f44a6efce0cb6339d0b15982182b0 (patch)
treef8ae407b17e4f34fbf5dc692ce240877bba7bd86
parented095a832d015fb8523d643d2b311124e000bfdf (diff)
verify imul correctness, workaround for webkit bug 126345; closes #1991
-rw-r--r--src/preamble.js3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/preamble.js b/src/preamble.js
index f9fccdf6..ac6ee7b3 100644
--- a/src/preamble.js
+++ b/src/preamble.js
@@ -1090,7 +1090,8 @@ Module['writeAsciiToMemory'] = writeAsciiToMemory;
{{{ reSign }}}
#if PRECISE_I32_MUL
-if (!Math['imul']) Math['imul'] = function imul(a, b) {
+// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 )
+if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) {
var ah = a >>> 16;
var al = a & 0xffff;
var bh = b >>> 16;