blob: 3445b8cfb6a7d6c21c8abed9e0758a9ff2a54dfb [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
function write()
{
WScript.Echo(arguments[0]);
}
write("Test case #1");
function TestCase1()
{
function foo()
{
write(arguments.caller);
write(arguments.callee);
}
foo();
}
TestCase1();
write("Test case #2");
function TestCase2()
{
function foo()
{
var a = arguments;
return a[0];
}
var j=0;
for(var i=0;i<10;i++)
{
j +=foo(10);
}
write(j);
}
TestCase2();
write("Test case #3");
function TestCase3()
{
function foo()
{
return arguments[1];
}
write(""+foo(10));
}
TestCase3();
write("Test case #4");
function TestCase4()
{
function foo()
{
var a = arguments;
eval("arguments[1] = 10");
return a[1];
}
write(foo());
}
TestCase4();
write("Test case #5");
function TestCase5()
{
function foo()
{
for (var a = 1; a < arguments.length; ++a)
{
write(arguments[a]);
}
}
foo(10,20,30,40);
}
TestCase5();
write("Test case #6");
function TestCase6()
{
(function()
{
eval("write(arguments[0])");
})("goodbye");
}
TestCase6();
write("Test case #7");
function TestCase7()
{
function lenChange()
{
write(arguments.length);
arguments.length--;
write(arguments.length);
}
lenChange(10,20,30);
}
TestCase7();
write("Test case #8");
function TestCase8()
{
function foo()
{
try {
arguments[1] = 26;
} catch(e)
{
}
write(arguments[1]);
}
foo();
}
TestCase8();
write("Test case #9");
function TestCase9()
{
function foo()
{
arguments.caller = 0;
}
foo();
}
TestCase9();
write("Test case #10");
function TestCase10()
{
function foo()
{
write(typeof(arguments));
}
foo();
}
TestCase10();
write("Test case #11");
function TestCase11()
{
function foo()
{
write(arguments.callee);
write(arguments.caller);
}
function bar()
{
foo();
}
bar();
}
TestCase11();
write("Test case #12");
function TestCase12()
{
function foo()
{
function bar()
{
return arguments[0];
}
return bar(arguments[0]);
}
write(foo(10));
}
TestCase12();
write("Test case #13");
function TestCase13()
{
(function ()
{
write(arguments.callee);
})();
}
TestCase13();
write("Test case #14");
function TestCase14()
{
var escape;
function foo()
{
escape = arguments.caller;
}
foo();
write(escape);
}
TestCase14();
write("Test case #15");
function TestCase15()
{
function foo()
{
var i = "abc";
write(arguments[i]);
}
foo();
}
TestCase15();
write("Test case #16");
function TestCase16()
{
function foo()
{
var a = []
write(a[arguments]);
}
foo();
}
TestCase16();
write("Test case #17");
function TestCase17()
{
(function () {
write(arguments ^= 1);
})();
(function () {
write(arguments *= 1.7);
})();
}
TestCase17();
var print = function(){return this};
(function(){/*sStart*/;while(("u143C".x) && 0){print(functional >> arguments); };;/*sEnd*/})();
write("Test case #18");
// Check negative index
(function(){
var i = -0x1000;
(function(){
write(arguments[i]);
})();
})();
write("Test case #19");
(function(){
function test0(){
//Code Snippet: NegativeArgumentBug.ecs (Blue15423)
for (var _i in arguments[1073741823]) {
};
};
test0();
})();
write("Test case #20");
(function(){
var shouldBailout = false;
function test() {
var requif = function () {};
var XPCSafeJSObjectWrapper = function () { };
for (var e = (Math.atan(arguments) / new XPCSafeJSObjectWrapper(''))in requif.x) {
};
};
test();
test();
})();
write("Test case #21");
(function(){
function foo(){
foo.arguments[0] = 10;
write(Math.max.apply(null, arguments));
}
foo(1);
foo(1);
})();
write("Test case #22");
(function(){
function test0(){
var obj0 = {};
// Snippets:caller2.ecs
function v26969(){
v26969.caller.arguments.length = 2;
v26969.caller.arguments[1] = 40;
}
function v26970(v26971, v26972){
write(v26971);
write(v26972);
}
function v26976(){
v26969();
v26970.apply(obj0, arguments);
}
v26976(10);
v26976(20);
v26976(30);
};
// generate profile
test0();
// run JITted code
test0();
// run code with bailouts enabled
shouldBailout = true;
test0();
})()
// Various ways of calling/loading function with used/unused result.
write("Test case #23");
var bailout = false;
function test23()
{
var a = [1,2,3];
if (bailout)
{
a = arguments;
}
return a[0];
}
write(test23([10,20,30]));
bailout = true;
write(test23([10,20,30]));
write("Test case #24");
bailout = false;
function test24()
{
var a = arguments;
if (bailout)
{
a = [1,2,3];
}
return a[0];
}
write(test24([10,20,30]));
bailout = true;
write(test24([10,20,30]));
write("Test case #25");
bailout = false;
function test25()
{
var a;
if (bailout)
{
a = arguments;
}
else
{
a = [1,2,3];
}
return a[0];
}
write(test25([10,20,30]));
bailout = true;
write(test25([10,20,30]));
write("Test case #26");
function test26()
{
var args = arguments;
if (args[1])
args = [3,args[0], args[1]];
else
args = [this, args[0]];
return args[0];
}
write(test26(10,false));
write(test26(10,20,30));
write("Test case #27");
(function ()
{
for(var x = arguments in "u6701")
{
}
write(x);
})();
write("Test case #28");
(function () {
var XPCSafeJSObjectWrapper = function () {
};
(function () {
if (!new XPCSafeJSObjectWrapper()) {
var y, z = arguments, ksjxzy, w;
throw -35184372088832;
}
write(z);
}());
})();