| OLD | NEW | 
|---|
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. | 
| 2 // Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. | 2 // Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. | 
| 3 // | 3 // | 
| 4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without | 
| 5 // modification, are permitted provided that the following conditions | 5 // modification, are permitted provided that the following conditions | 
| 6 // are met: | 6 // are met: | 
| 7 // 1.  Redistributions of source code must retain the above copyright | 7 // 1.  Redistributions of source code must retain the above copyright | 
| 8 //     notice, this list of conditions and the following disclaimer. | 8 //     notice, this list of conditions and the following disclaimer. | 
| 9 // 2.  Redistributions in binary form must reproduce the above copyright | 9 // 2.  Redistributions in binary form must reproduce the above copyright | 
| 10 //     notice, this list of conditions and the following disclaimer in the | 10 //     notice, this list of conditions and the following disclaimer in the | 
| 11 //     documentation and/or other materials provided with the distribution. | 11 //     documentation and/or other materials provided with the distribution. | 
| 12 // | 12 // | 
| 13 // THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND AN
    Y | 13 // THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND AN
    Y | 
| 14 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 14 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 
| 15 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 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 AN
    Y | 16 // DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR AN
    Y | 
| 17 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 17 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 
| 18 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 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 O
    N | 19 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND O
    N | 
| 20 // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 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 | 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. | 22 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
| 23 | 23 | 
| 24 description( | 24 description("This test checks toString() round-trip decompilation for binary and
     unary operators."); | 
| 25 "This tests that bytecode code generation doesn't crash when it encounters odd c
    ases of an ignored result." |  | 
| 26 ); |  | 
| 27 | 25 | 
| 28 function emptyStatementDoWhileTest() | 26     var tests = [ | 
| 29 { | 27         "x + + y", | 
| 30     do | 28         "x + - y", | 
| 31         ; | 29         "x - + y", | 
| 32     while (false) { } | 30         "x - - y", | 
| 33     return true; | 31         "x * + y", | 
| 34 } | 32         "x * - y", | 
|  | 33         "x / + y", | 
|  | 34         "x / - y", | 
|  | 35         "x % + y", | 
|  | 36         "x % - y", | 
|  | 37         "x++ + y", | 
|  | 38         "x++ - y", | 
|  | 39         "x++ * y", | 
|  | 40         "x++ / y", | 
|  | 41         "x-- + y", | 
|  | 42         "x-- - y", | 
|  | 43         "x-- * y", | 
|  | 44         "x-- / y", | 
|  | 45         "x + ++y", | 
|  | 46         "x - ++y", | 
|  | 47         "x * ++y", | 
|  | 48         "x / ++y", | 
|  | 49         "x + --y", | 
|  | 50         "x - --y", | 
|  | 51         "x * --y", | 
|  | 52         "x / --y", | 
|  | 53         "x++ + ++y", | 
|  | 54         "x++ - ++y", | 
|  | 55         "x++ * ++y", | 
|  | 56         "x++ / ++y", | 
|  | 57         "x-- + ++y", | 
|  | 58         "x-- - ++y", | 
|  | 59         "x-- * ++y", | 
|  | 60         "x-- / ++y", | 
|  | 61         "x++ + --y", | 
|  | 62         "x++ - --y", | 
|  | 63         "x++ * --y", | 
|  | 64         "x++ / --y", | 
|  | 65         "x-- + --y", | 
|  | 66         "x-- - --y", | 
|  | 67         "x-- * --y", | 
|  | 68         "x-- / --y", | 
|  | 69         "+ + x", | 
|  | 70         "+ - x", | 
|  | 71         "- + x", | 
|  | 72         "- - x", | 
|  | 73         "1", | 
|  | 74         "-1", | 
|  | 75         "- -1", | 
|  | 76         "- - 0", | 
|  | 77         "- - NaN" | 
|  | 78     ]; | 
| 35 | 79 | 
| 36 shouldBeTrue("emptyStatementDoWhileTest()"); | 80     for (test in tests) { | 
| 37 | 81         var decompiledFunction = eval("(function () {  " + tests[test] + ";})").
    toString().replace(/\n/g, ""); | 
| 38 function debuggerDoWhileTest() | 82         shouldBe("decompiledFunction", "'function () {  " + tests[test] + ";}'")
    ; | 
| 39 { | 83     } | 
| 40     do |  | 
| 41         debugger; |  | 
| 42     while (false) { } |  | 
| 43     return true; |  | 
| 44 } |  | 
| 45 |  | 
| 46 shouldBeTrue("debuggerDoWhileTest()"); |  | 
| 47 |  | 
| 48 function continueDoWhileTest() |  | 
| 49 { |  | 
| 50     var i = 0; |  | 
| 51     do |  | 
| 52         i++; |  | 
| 53     while (i < 10) { |  | 
| 54         do |  | 
| 55             continue; |  | 
| 56         while (false) { } |  | 
| 57     } |  | 
| 58     return true; |  | 
| 59 } |  | 
| 60 |  | 
| 61 shouldBeTrue("continueDoWhileTest()"); |  | 
| 62 |  | 
| 63 function breakDoWhileTest() |  | 
| 64 { |  | 
| 65     var i = 0; |  | 
| 66     do |  | 
| 67         i++; |  | 
| 68     while (i < 10) { |  | 
| 69         do |  | 
| 70             continue; |  | 
| 71         while (false) { } |  | 
| 72     } |  | 
| 73     return true; |  | 
| 74 } |  | 
| 75 |  | 
| 76 shouldBeTrue("breakDoWhileTest()"); |  | 
| 77 |  | 
| 78 function tryDoWhileTest() |  | 
| 79 { |  | 
| 80     do |  | 
| 81         try { } catch (o) { } |  | 
| 82     while (false) { } |  | 
| 83     return true; |  | 
| 84 } |  | 
| 85 |  | 
| 86 shouldBeTrue("tryDoWhileTest()"); |  | 
| OLD | NEW | 
|---|