function insertNaNWhileFilling() { var array = new Array(6); for (var i = 0; i < 4; ++i) array[i] = i; array[5] = NaN; return array; } noInline(insertNaNWhileFilling); function testInsertNaNWhileFilling() { var array = insertNaNWhileFilling(); for (var i = 0; i < 4; ++i) { var value = array[i]; if (value !== i) { throw "Failed testInsertNaNWhileFilling, value = " + value + " instead of " + i; } } var nan = array[5]; if (!Number.isNaN(nan)) throw "Failed testInsertNaNWhileFilling, array[5] is " + nan + " instead of NaN"; } noInline(testInsertNaNWhileFilling); for (var i = 0; i < 1e4; ++i) { testInsertNaNWhileFilling(); } function insertNaNAfterFilling() { var array = new Array(6); for (var i = 0; i < 5; ++i) array[i] = i; array[5] = NaN; return array; } noInline(insertNaNAfterFilling); function testInsertNaNAfterFilling() { var array = insertNaNAfterFilling(); for (var i = 0; i < 4; ++i) { var value = array[i]; if (value !== i) { throw "Failed testInsertNaNAfterFilling, value = " + value + " instead of " + i; } } var nan = array[5]; if (!Number.isNaN(nan)) throw "Failed testInsertNaNAfterFilling, array[5] is " + nan + " instead of NaN"; } noInline(testInsertNaNAfterFilling); for (var i = 0; i < 1e4; ++i) { testInsertNaNAfterFilling(); } function pushNaNWhileFilling() { var array = []; for (var i = 0; i < 5; ++i) array.push(i); array.push(NaN); return array; } noInline(pushNaNWhileFilling); function testPushNaNWhileFilling() { var array = pushNaNWhileFilling(); for (var i = 0; i < 4; ++i) { var value = array[i]; if (value !== i) { throw "Failed testPushNaNWhileFilling, value = " + value + " instead of " + i; } } var nan = array[5]; if (!Number.isNaN(nan)) throw "Failed testPushNaNWhileFilling, array[5] is " + nan + " instead of NaN"; } noInline(testPushNaNWhileFilling); for (var i = 0; i < 1e4; ++i) { testPushNaNWhileFilling(); }