--- /dev/null
+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();
+}
\ No newline at end of file