58 lines
1.5 KiB
JavaScript
58 lines
1.5 KiB
JavaScript
description(
|
|
"This tests that function inlining in the DFG JIT doesn't get confused by different global objects."
|
|
);
|
|
|
|
jsTestIsAsync = true;
|
|
|
|
var b = 321;
|
|
|
|
function foo(a) {
|
|
return a + b;
|
|
}
|
|
|
|
shouldBe("foo(3)", "324");
|
|
|
|
function done(value) {
|
|
var expected = 5770500;
|
|
if (value == expected)
|
|
testPassed("done() called with " + expected);
|
|
else
|
|
testFailed("done() called with " + value + ", but expected " + expected);
|
|
finishJSTest();
|
|
}
|
|
|
|
function doit() {
|
|
document.getElementById("frameparent").innerHTML = "";
|
|
document.getElementById("frameparent").innerHTML = "<iframe id='testframe'>";
|
|
var testFrame = document.getElementById("testframe");
|
|
testFrame.contentDocument.open();
|
|
|
|
code = "<!DOCTYPE html>\n<head></head><body><script type=\"text/javascript\">\n";
|
|
|
|
// Make sure that we get as many variables as the parent.
|
|
for (var i = 0; i < 100; ++i)
|
|
code += "var b" + i + " = " +i + ";\n";
|
|
|
|
code += "result = 0;\n" +
|
|
"function bar(a) {\n" +
|
|
" var foo = window.parent.foo;\n" +
|
|
" return ";
|
|
|
|
for (var i = 0; i < 100; ++i)
|
|
code += "b" + i + " + ";
|
|
|
|
code += "foo(a);\n" +
|
|
"}\n" +
|
|
"for (var i = 0; i < 1000; ++i) {\n" +
|
|
" result += bar(i);\n" +
|
|
"}\n" +
|
|
"window.parent.done(result);\n" +
|
|
"</script></body></html>"
|
|
|
|
testFrame.contentDocument.write(code);
|
|
testFrame.contentDocument.close();
|
|
}
|
|
|
|
window.setTimeout(doit, 10);
|
|
|