зеркало из https://github.com/mozilla/gecko-dev.git
Fixed parseInt handling negative numbers wrong in JIT'd code (bug 507993, r=brendan).
This commit is contained in:
Родитель
dba74e2d23
Коммит
be6e1fd282
|
@ -208,7 +208,16 @@ ParseIntDouble(jsdouble d)
|
||||||
{
|
{
|
||||||
if (!JSDOUBLE_IS_FINITE(d))
|
if (!JSDOUBLE_IS_FINITE(d))
|
||||||
return js_NaN;
|
return js_NaN;
|
||||||
|
|
||||||
|
/* Don't preserve -0, because js_strtointeger doesn't. */
|
||||||
|
if (d == 0)
|
||||||
|
return 0;
|
||||||
|
if (d > 0)
|
||||||
return floor(d);
|
return floor(d);
|
||||||
|
d = ceil(d);
|
||||||
|
|
||||||
|
/* ceil does not seem to return -0 if not given -0. */
|
||||||
|
return (d == 0) ? -0.0 : d;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -5683,6 +5683,29 @@ function testClosureIncrSideExit() {
|
||||||
testClosureIncrSideExit.expected = "ddd";
|
testClosureIncrSideExit.expected = "ddd";
|
||||||
test(testClosureIncrSideExit);
|
test(testClosureIncrSideExit);
|
||||||
|
|
||||||
|
function parseIntHelper(n) {
|
||||||
|
var a;
|
||||||
|
for (var i = 0; i < 5; i++)
|
||||||
|
a = parseInt(n);
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
function doParseIntTests() {
|
||||||
|
var inputs = [0, -0, .1, -.1, .7, -.7, 1.3, -1.3];
|
||||||
|
var outputs = new Array(8);
|
||||||
|
//avoid jit, unrolled
|
||||||
|
outputs[0] = outputs[1] = outputs[2] = outputs[4] = 0;
|
||||||
|
outputs[3] = outputs[5] = -0;
|
||||||
|
outputs[6] = 1;
|
||||||
|
outputs[7] = -1;
|
||||||
|
for (var i = 0; i < 8; i++) {
|
||||||
|
var testfn = new Function('return parseIntHelper(' + uneval(inputs[i]) + ');');
|
||||||
|
testfn.name = 'testParseInt' + uneval(inputs[i]);
|
||||||
|
testfn.expected = outputs[i];
|
||||||
|
test(testfn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
doParseIntTests();
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* *
|
* *
|
||||||
* _____ _ _ _____ ______ _____ _______ *
|
* _____ _ _ _____ ______ _____ _______ *
|
||||||
|
|
Загрузка…
Ссылка в новой задаче