function foo(x) { | |
return new Array(x); | |
} | |
noInline(foo); | |
var poke; | |
Array.prototype.__defineSetter__("1", function() { | |
poke = "poke"; | |
}); | |
function test(size) { | |
var result = foo(size); | |
if (result.length != size) | |
throw "Error: bad result: " + result; | |
var sawThings = false; | |
for (var s in result) { | |
if (s != "1") | |
sawThings = true; | |
} | |
if (sawThings) | |
throw "Error: array is in bad state: " + result; | |
result[0] = "42.5"; | |
if (result[0] != "42.5") | |
throw "Error: array is in wierd state: " + result; | |
poke = null; | |
result[1] = 42; | |
if (poke != "poke") | |
throw "Error: setter not called."; | |
} | |
for (var i = 0; i < 100000; ++i) { | |
test(42); | |
} |