//------------------------------------------------------------------------------------------------------- | |
// Copyright (C) Microsoft. All rights reserved. | |
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. | |
//------------------------------------------------------------------------------------------------------- | |
function print(x) { WScript.Echo(x+''); } | |
function inner(func) { | |
print(func.caller); | |
if (func.arguments) | |
{ | |
print(func.arguments[0]); | |
print(func.arguments.caller); | |
} | |
if (func.caller) { | |
if (func.arguments.caller) { | |
print(func.arguments.caller[0]); | |
} else { | |
print("func.arguments.caller undefined"); | |
} | |
} | |
print(""); | |
} | |
function f() { | |
inner(f); | |
try { | |
try { | |
throw null; | |
} | |
finally { | |
inner(g); | |
} | |
} | |
catch (e) { | |
inner(f); | |
} | |
} | |
function g() { | |
f("f from g"); | |
} | |
f("f from global"); | |
g("g from global"); | |
function callerA() { | |
AA(null); | |
} | |
function AA(x) { | |
print(AA.caller); | |
} | |
function callerB() { | |
eval("AB(null)"); | |
} | |
function AB(x) { | |
print(AB.caller); | |
} | |
callerA(); | |
callerB(); | |
(function() { | |
print(arguments.caller); | |
print(delete arguments.caller); | |
print(arguments.caller); | |
arguments.caller = 0; | |
print(arguments.caller); | |
function f() { | |
print(arguments.caller); | |
print(delete arguments.caller); | |
print(arguments.caller); | |
arguments.caller = 0; | |
print(arguments.caller); | |
} | |
f(); | |
})(); | |
function test0(){ | |
var func0 = function(){ | |
var __loopvar1 = 0; | |
while(((b <<= (arguments.caller && arguments.caller[1]) ? 3 : 1)) && __loopvar1 < 3) { | |
__loopvar1++; | |
} | |
} | |
var func2 = function(){ | |
func0(); | |
} | |
var b = 1; | |
function bar0 () { | |
func2(); | |
} | |
bar0(1, 1, 1); | |
WScript.Echo("b = " + (b|0)); | |
}; | |
// generate profile | |
test0(); | |
test0(); |