forked from chakra-core/ChakraCore
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLongCallStackThrow.js
More file actions
65 lines (60 loc) · 1.53 KB
/
LongCallStackThrow.js
File metadata and controls
65 lines (60 loc) · 1.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
function Dump(output)
{
if (this.WScript)
{
WScript.Echo(output);
}
else
{
alert(output);
}
}
function throwExceptionWithCatch()
{
try
{
throwException();
}
catch(e)
{
Dump(TrimStackTracePath(e.stack));
}
}
var errorObject;
function throwException()
{
errorObject = new Error("this is my error");
throw errorObject;
}
function runtest(max, catchException)
{
var helper = function(i)
{
return function(j)
{
if (j == 0)
{
return catchException == undefined ? throwExceptionWithCatch() : throwException();
}
that["function" + (j-1)](j-1);
}
}
var that = new Object();
var i = 0;
for (i = 0; i < max; i++)
{
that["function" + i] = helper(i);
}
that["function" + (max-1)](max-1);
}
if (this.WScript && this.WScript.Arguments && this.WScript.LoadScriptFile("../UnitTestFramework/TrimStackTracePath.js"))
{
if (this.WScript.Arguments[0] == "runTest")
{
runtest(this.WScript.Arguments[1]);
}
}