blob: f822eba8812b5e8dd34e7bfbe107601f12222f84 [file] [log] [blame]
// Regression test for bug 179212
var p = { "a": {} };
var flag = 0;
var data = [];
var copy = [];
var z = new Proxy({}, {
getPrototypeOf: function() {
if (flag == 2) {
data[0] = { "x": "I changed" };
}
if (flag == 1) {
flag = 2;
}
return {"a": 1, "b": 2}
}
});
p.__proto__ = z;
function reset()
{
flag = 0;
data = [1.1, 2.2, 3.3];
copy = [];
}
function runTest(func)
{
reset();
for (var i = 0; i < 0x10000; i++)
func();
flag = 1;
func();
if (copy[0].x != "I changed")
throw "Expected updated value for copy[0]";
}
function testWithoutFTL()
{
function f()
{
data[0] = 2.2;
for(var d in p) {
copy[0] = data[0];
copy[1] = data[1];
copy[2] = data[2];
}
}
noFTL(f);
runTest(f);
}
function testWithFTL()
{
function f()
{
data[0] = 2.2;
for(var d in p) {
copy[0] = data[0];
copy[1] = data[1];
copy[2] = data[2];
}
}
runTest(f);
}
testWithoutFTL();
testWithFTL();