//@ runDefault("--useFTLJIT=0", "--useConcurrentJIT=false") | |
let num = 150; | |
function foo(comp, o, b) { | |
let sum = o.f; | |
if (b) | |
OSRExit(); | |
for (let i = 0; i < comp; ++i) { | |
sum += o.f; | |
} | |
return sum; | |
} | |
noInline(foo); | |
let o = {f:25}; | |
let o2 = {f:25, g:44}; | |
o2.f = 45; | |
o2.f = 45; | |
o2.f = 45; | |
o2.f = 45; | |
let comp = { | |
valueOf() { return num; } | |
} | |
foo(comp, o2, true); | |
foo(comp, o2, true); | |
for (let i = 0; i < 500; ++i) { | |
foo(comp, o2, false); | |
} | |
let o3 = {g:24, f:73}; | |
num = 10000000; | |
let result = foo(comp, o3, false); | |
if (result !== (num + 1)*73) { | |
throw new Error("Bad: " + result); | |
} |