mirror of https://github.com/tc39/test262.git
103 lines
2.1 KiB
JavaScript
103 lines
2.1 KiB
JavaScript
var foos = [
|
|
function(o) { o[0] = 5; o.ff = 42; o[0] = 6; },
|
|
function(o) { o[0] = 5; o.ff = 42; o[0] = 6; },
|
|
function(o) { o[0] = 5; o.ff = 42; o[0] = 6; },
|
|
function(o) { o[0] = 5; o.ff = 42; o[0] = 6; },
|
|
function(o) { o[0] = 5; o.ff = 42; o[0] = 6; },
|
|
function(o) { o[0] = 5; o.ff = 42; o[0] = 6; },
|
|
function(o) { o[0] = 5; o.ff = 42; o[0] = 6; },
|
|
function(o) { o[0] = 5; o.ff = 42; o[0] = 6; }
|
|
];
|
|
|
|
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; have o.na = " + o.na;
|
|
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};
|
|
o[0] = 0;
|
|
p[0] = 0;
|
|
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);
|
|
}
|
|
|