var foos = [ function(o) { o.ff = 42; }, function(o) { o.ff = 42; }, function(o) { o.ff = 42; }, function(o) { o.ff = 42; }, function(o) { o.ff = 42; }, function(o) { o.ff = 42; }, function(o) { o.ff = 42; }, function(o) { o.ff = 42; } ]; if (foos.length != 8) throw "Error"; function bar(o, n) { if (n == 0) return; o.na = 1; if (n == 1) return; o.nb = 2; if (n == 2) return; o.nc = 3; if (n == 3) return; o.nd = 4; if (n == 4) return; o.ne = 5; if (n == 5) return; o.nf = 6; if (n == 6) return; o.ng = 7; if (n == 7) return; o.nh = 8; } function baz(o, n) { if (n == 0) return; if (o.na != 1) throw "Memory corruption"; if (n == 1) return; if (o.nb != 2) throw "Memory corruption"; if (n == 2) return; if (o.nc != 3) throw "Memory corruption"; if (n == 3) return; if (o.nd != 4) throw "Memory corruption"; if (n == 4) return; if (o.ne != 5) throw "Memory corruption"; if (n == 5) return; if (o.nf != 6) throw "Memory corruption"; if (n == 6) return; if (o.ng != 7) throw "Memory corruption"; if (n == 7) return; if (o.nh != 8) throw "Memory corruption"; } for (var i = 0; i < 8; ++i) noInline(foos[i]); noInline(bar); for (var i = 0; i < 100000; ++i) { var o = {}; var p = {a:1, b:2, c:3, d:4, e:5, f:6}; bar(o, i % 8); bar(p, i % 8); foos[i % 8](o); foos[i % 8](p); if (o.ff != 42) throw "Bad result in o: " + o.ff; if (p.ff != 42) throw "Bad result in o: " + p.ff; if (p.a != 1 || p.b != 2 || p.c != 3 || p.d != 4 || p.e != 5 || p.f != 6) throw "Memory corruption" baz(o, i % 8); baz(p, i % 8); }