1function foo(x) {
2    return new Array(x);
3}
4
5noInline(foo);
6
7var poke;
8Array.prototype.__defineSetter__("1", function() {
9    poke = "poke";
10});
11
12function test(size) {
13    var result = foo(size);
14    if (result.length != size)
15        throw "Error: bad result: " + result;
16    var sawThings = false;
17    for (var s in result) {
18        if (s != "1")
19            sawThings = true;
20    }
21    if (sawThings)
22        throw "Error: array is in bad state: " + result;
23    result[0] = "42.5";
24    if (result[0] != "42.5")
25        throw "Error: array is in wierd state: " + result;
26    poke = null;
27    result[1] = 42;
28    if (poke != "poke")
29        throw "Error: setter not called.";
30}
31
32for (var i = 0; i < 100000; ++i) {
33    test(42);
34}
35