1# 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
24Tests that a redundant load of a captured variable that was proven to be a constant doesn't crash the compiler.
25
26On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
27
28
29PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
30PASS "" + foo(o, i % 2) is "function () { return x; }"
31PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
32PASS "" + foo(o, i % 2) is "function () { return x; }"
33PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
34PASS "" + foo(o, i % 2) is "function () { return x; }"
35PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
36PASS "" + foo(o, i % 2) is "function () { return x; }"
37PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
38PASS "" + foo(o, i % 2) is "function () { return x; }"
39PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
40PASS "" + foo(o, i % 2) is "function () { return x; }"
41PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
42PASS "" + foo(o, i % 2) is "function () { return x; }"
43PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
44PASS "" + foo(o, i % 2) is "function () { return x; }"
45PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
46PASS "" + foo(o, i % 2) is "function () { return x; }"
47PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
48PASS "" + foo(o, i % 2) is "function () { return x; }"
49PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
50PASS "" + foo(o, i % 2) is "function () { return x; }"
51PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
52PASS "" + foo(o, i % 2) is "function () { return x; }"
53PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
54PASS "" + foo(o, i % 2) is "function () { return x; }"
55PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
56PASS "" + foo(o, i % 2) is "function () { return x; }"
57PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
58PASS "" + foo(o, i % 2) is "function () { return x; }"
59PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
60PASS "" + foo(o, i % 2) is "function () { return x; }"
61PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
62PASS "" + foo(o, i % 2) is "function () { return x; }"
63PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
64PASS "" + foo(o, i % 2) is "function () { return x; }"
65PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
66PASS "" + foo(o, i % 2) is "function () { return x; }"
67PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
68PASS "" + foo(o, i % 2) is "function () { return x; }"
69PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
70PASS "" + foo(o, i % 2) is "function () { return x; }"
71PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
72PASS "" + foo(o, i % 2) is "function () { return x; }"
73PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
74PASS "" + foo(o, i % 2) is "function () { return x; }"
75PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
76PASS "" + foo(o, i % 2) is "function () { return x; }"
77PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
78PASS "" + foo(o, i % 2) is "function () { return x; }"
79PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
80PASS "" + foo(o, i % 2) is "function () { return x; }"
81PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
82PASS "" + foo(o, i % 2) is "function () { return x; }"
83PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
84PASS "" + foo(o, i % 2) is "function () { return x; }"
85PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
86PASS "" + foo(o, i % 2) is "function () { return x; }"
87PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
88PASS "" + foo(o, i % 2) is "function () { return x; }"
89PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
90PASS "" + foo(o, i % 2) is "function () { return x; }"
91PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
92PASS "" + foo(o, i % 2) is "function () { return x; }"
93PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
94PASS "" + foo(o, i % 2) is "function () { return x; }"
95PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
96PASS "" + foo(o, i % 2) is "function () { return x; }"
97PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
98PASS "" + foo(o, i % 2) is "function () { return x; }"
99PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
100PASS "" + foo(o, i % 2) is "function () { return x; }"
101PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
102PASS "" + foo(o, i % 2) is "function () { return x; }"
103PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
104PASS "" + foo(o, i % 2) is "function () { return x; }"
105PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
106PASS "" + foo(o, i % 2) is "function () { return x; }"
107PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
108PASS "" + foo(o, i % 2) is "function () { return x; }"
109PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
110PASS "" + foo(o, i % 2) is "function () { return x; }"
111PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
112PASS "" + foo(o, i % 2) is "function () { return x; }"
113PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
114PASS "" + foo(o, i % 2) is "function () { return x; }"
115PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
116PASS "" + foo(o, i % 2) is "function () { return x; }"
117PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
118PASS "" + foo(o, i % 2) is "function () { return x; }"
119PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
120PASS "" + foo(o, i % 2) is "function () { return x; }"
121PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
122PASS "" + foo(o, i % 2) is "function () { return x; }"
123PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
124PASS "" + foo(o, i % 2) is "function () { return x; }"
125PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
126PASS "" + foo(o, i % 2) is "function () { return x; }"
127PASS "" + foo(o, i % 2) is "function () { return 32; },function () { return 32; }"
128PASS "" + foo(o, i % 2) is "function () { return x; }"
129PASS successfullyParsed is true
130
131TEST COMPLETE
132
133