blob: 5126b1e242166f9a7176792dd2f799c5038281a0 [file] [log] [blame]
Ben Murdochb8a8cc12014-11-26 15:28:44 +00001// Copyright 2013 the V8 project authors. All rights reserved.
2// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
3//
4// Redistribution and use in source and binary forms, with or without
5// modification, are permitted provided that the following conditions
6// are met:
7// 1. Redistributions of source code must retain the above copyright
8// notice, this list of conditions and the following disclaimer.
9// 2. Redistributions in binary form must reproduce the above copyright
10// notice, this list of conditions and the following disclaimer in the
11// documentation and/or other materials provided with the distribution.
12//
13// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
14// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
17// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
22// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23
24description(
25"This tests that exceptions are thrown correctly."
26);
27
28// A large function containing a try/catch - this prevent DFG compilation.
29function doesntDFGCompile()
30{
31 function callMe() {};
32
33 callMe(0,1,2,3,4,5,6,7,8,9);
34 callMe(0,1,2,3,4,5,6,7,8,9);
35 callMe(0,1,2,3,4,5,6,7,8,9);
36 callMe(0,1,2,3,4,5,6,7,8,9);
37 callMe(0,1,2,3,4,5,6,7,8,9);
38 callMe(0,1,2,3,4,5,6,7,8,9);
39 callMe(0,1,2,3,4,5,6,7,8,9);
40 callMe(0,1,2,3,4,5,6,7,8,9);
41 callMe(0,1,2,3,4,5,6,7,8,9);
42 callMe(0,1,2,3,4,5,6,7,8,9);
43
44 callMe(0,1,2,3,4,5,6,7,8,9);
45 callMe(0,1,2,3,4,5,6,7,8,9);
46 callMe(0,1,2,3,4,5,6,7,8,9);
47 callMe(0,1,2,3,4,5,6,7,8,9);
48 callMe(0,1,2,3,4,5,6,7,8,9);
49 callMe(0,1,2,3,4,5,6,7,8,9);
50 callMe(0,1,2,3,4,5,6,7,8,9);
51 callMe(0,1,2,3,4,5,6,7,8,9);
52 callMe(0,1,2,3,4,5,6,7,8,9);
53 callMe(0,1,2,3,4,5,6,7,8,9);
54
55 callMe(0,1,2,3,4,5,6,7,8,9);
56 callMe(0,1,2,3,4,5,6,7,8,9);
57 callMe(0,1,2,3,4,5,6,7,8,9);
58 callMe(0,1,2,3,4,5,6,7,8,9);
59 callMe(0,1,2,3,4,5,6,7,8,9);
60 callMe(0,1,2,3,4,5,6,7,8,9);
61 callMe(0,1,2,3,4,5,6,7,8,9);
62 callMe(0,1,2,3,4,5,6,7,8,9);
63 callMe(0,1,2,3,4,5,6,7,8,9);
64 callMe(0,1,2,3,4,5,6,7,8,9);
65
66 callMe(0,1,2,3,4,5,6,7,8,9);
67 callMe(0,1,2,3,4,5,6,7,8,9);
68 callMe(0,1,2,3,4,5,6,7,8,9);
69 callMe(0,1,2,3,4,5,6,7,8,9);
70 callMe(0,1,2,3,4,5,6,7,8,9);
71 callMe(0,1,2,3,4,5,6,7,8,9);
72 callMe(0,1,2,3,4,5,6,7,8,9);
73 callMe(0,1,2,3,4,5,6,7,8,9);
74 callMe(0,1,2,3,4,5,6,7,8,9);
75 callMe(0,1,2,3,4,5,6,7,8,9);
76
77 callMe(0,1,2,3,4,5,6,7,8,9);
78 callMe(0,1,2,3,4,5,6,7,8,9);
79 callMe(0,1,2,3,4,5,6,7,8,9);
80 callMe(0,1,2,3,4,5,6,7,8,9);
81 callMe(0,1,2,3,4,5,6,7,8,9);
82 callMe(0,1,2,3,4,5,6,7,8,9);
83 callMe(0,1,2,3,4,5,6,7,8,9);
84 callMe(0,1,2,3,4,5,6,7,8,9);
85 callMe(0,1,2,3,4,5,6,7,8,9);
86 callMe(0,1,2,3,4,5,6,7,8,9);
87
88 try {
89 return 1;
90 } catch (e) {
91 return 2;
92 }
93};
94
95function test(x)
96{
97 return x();
98};
99
100// warmup the test method
101for (i = 0; i < 200; ++i)
102 test(doesntDFGCompile);
103
104//
105var caughtException = false;
106try {
107 test();
108} catch (e) {
109 caughtException = true;
110}
111
112shouldBe("caughtException", 'true');
113var successfullyParsed = true;