зеркало из 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))
|
||||
return js_NaN;
|
||||
return floor(d);
|
||||
|
||||
/* Don't preserve -0, because js_strtointeger doesn't. */
|
||||
if (d == 0)
|
||||
return 0;
|
||||
if (d > 0)
|
||||
return floor(d);
|
||||
d = ceil(d);
|
||||
|
||||
/* ceil does not seem to return -0 if not given -0. */
|
||||
return (d == 0) ? -0.0 : d;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -5683,6 +5683,29 @@ function testClosureIncrSideExit() {
|
|||
testClosureIncrSideExit.expected = "ddd";
|
||||
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();
|
||||
|
||||
/*****************************************************************************
|
||||
* *
|
||||
* _____ _ _ _____ ______ _____ _______ *
|
||||
|
|
Загрузка…
Ссылка в новой задаче