//------------------------------------------------------------------------------------------------------- // 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); }()); })();