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