blob: 72e18d3b33b1bb8945ee7220b78a6ad148a84598 [file] [edit]
//@runDefault("--useConcurrentJIT=false", "--validateAbstractInterpreterState=true", "--validateAbstractInterpreterStateProbability=1.0")
function opt(inline, callTypeOf, object, transition) {
let result;
object.p1;
for (let i = 0; i < 2; i++) {
if (inline) {
object();
result = object.p2;
}
if (callTypeOf) {
transition.x = 1;
result = typeof(object.p3);
}
}
return result;
}
function watchP3(object) {
function cache() {
return object.p3;
}
for (let i = 0; i < 100; i++) {
cache();
}
}
function main() {
noDFG(main);
let object1 = function () {};
object1.p1 = 1;
object1.p2 = 1;
object1.__defineGetter__('p3', () => {});
let object2 = function () {};
object2.p1 = 2;
object2.p2 = 1;
object2.p3 = 1;
watchP3(object1);
for (let i = 0; i < 100; i++) {
opt(/* inline */ false, /* callTypeOf */ true, object2, {});
}
for (let i = 0; i < testLoopCount; i++) {
opt(/* inline */ true, /* callTypeOf */ false, object1, {});
}
opt(/* inline */ false, /* callTypeOf */ false, object1, {});
}
main();