OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 11 matching lines...) Expand all Loading... |
22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
27 | 27 |
28 // Flags: --allow-natives-syntax | 28 // Flags: --allow-natives-syntax |
29 | 29 |
30 // Test that we can inline functions containing materialized literals. | 30 // Test that we can inline functions containing materialized literals. |
31 | 31 |
| 32 function a2(b, c) { |
| 33 return [b, c, b + c]; |
| 34 } |
| 35 |
| 36 function a1(a, b, c) { |
| 37 return [a, a2(b, c)]; |
| 38 } |
| 39 |
| 40 function TestArrayLiteral(a, b, c) { |
| 41 var expected = [a, [b, c, b + c]]; |
| 42 var result = a1(a, b, c); |
| 43 assertEquals(expected, result, "TestArrayLiteral"); |
| 44 } |
| 45 |
| 46 TestArrayLiteral(1, 2, 3); |
| 47 TestArrayLiteral(1, 2, 3); |
| 48 %OptimizeFunctionOnNextCall(TestArrayLiteral); |
| 49 TestArrayLiteral(1, 2, 3); |
| 50 TestArrayLiteral('a', 'b', 'c'); |
| 51 |
32 function o2(b, c) { | 52 function o2(b, c) { |
33 return { 'b':b, 'c':c, 'y':b + c }; | 53 return { 'b':b, 'c':c, 'y':b + c }; |
34 } | 54 } |
35 | 55 |
36 function o1(a, b, c) { | 56 function o1(a, b, c) { |
37 return { 'a':a, 'x':o2(b, c) }; | 57 return { 'a':a, 'x':o2(b, c) }; |
38 } | 58 } |
39 | 59 |
40 function TestObjectLiteral(a, b, c) { | 60 function TestObjectLiteral(a, b, c) { |
41 var expected = { 'a':a, 'x':{ 'b':b, 'c':c, 'y':b + c } }; | 61 var expected = { 'a':a, 'x':{ 'b':b, 'c':c, 'y':b + c } }; |
(...skipping 18 matching lines...) Expand all Loading... |
60 function TestRegExpLiteral(s, x, y, expected) { | 80 function TestRegExpLiteral(s, x, y, expected) { |
61 var result = r1(s, x, y); | 81 var result = r1(s, x, y); |
62 assertEquals(expected, result, "TestRegExpLiteral"); | 82 assertEquals(expected, result, "TestRegExpLiteral"); |
63 } | 83 } |
64 | 84 |
65 TestRegExpLiteral("a-", "reg", "exp", "regexp-"); | 85 TestRegExpLiteral("a-", "reg", "exp", "regexp-"); |
66 TestRegExpLiteral("-b", "reg", "exp", "-expreg"); | 86 TestRegExpLiteral("-b", "reg", "exp", "-expreg"); |
67 %OptimizeFunctionOnNextCall(TestRegExpLiteral); | 87 %OptimizeFunctionOnNextCall(TestRegExpLiteral); |
68 TestRegExpLiteral("ab", "reg", "exp", "regexpexpreg"); | 88 TestRegExpLiteral("ab", "reg", "exp", "regexpexpreg"); |
69 TestRegExpLiteral("ab", 12345, 54321, "6666666666"); | 89 TestRegExpLiteral("ab", 12345, 54321, "6666666666"); |
OLD | NEW |