40 lines
853 B
JavaScript
40 lines
853 B
JavaScript
//@ noNoLLIntRunLayoutTest if $architecture == "arm"
|
|
|
|
description(
|
|
"Tests that performing an OSR entry into a loop with a hoisted structure check, where the loop may clobber the world, works."
|
|
);
|
|
|
|
function foo(o, n) {
|
|
var result = 0;
|
|
for (var i = 0; i < n; ++i) {
|
|
result += o.f;
|
|
result += o.g(i);
|
|
if (i > 1)
|
|
result += o.i;
|
|
if (i > 2)
|
|
result += o.j;
|
|
o = o.h(i);
|
|
result += o.g(i);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
function bar(i) {
|
|
var str = "var x" + i + " = 42; x" + i;
|
|
return eval(str);
|
|
}
|
|
|
|
var counter = 0;
|
|
function baz(i) {
|
|
var str = "var x" + i + " = 42; x" + i;
|
|
eval(str);
|
|
if (i == 1100)
|
|
return {g:bar, i:3, j:4, h:baz, f:2 + counter++};
|
|
return this;
|
|
}
|
|
|
|
var object = {f:1, g:bar, h:baz, i:2, j:3};
|
|
shouldBe("foo(object, 10000)", "926684");
|
|
|
|
|