OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Flags: --allow-natives-syntax | 5 // Flags: --allow-natives-syntax |
6 | 6 |
| 7 // For TurboFan, make sure we can eliminate the -0 return value check |
| 8 // by recognizing a constant value. |
| 9 function gotaconstant(y) { return 15 * y; } |
| 10 assertEquals(45, gotaconstant(3)); |
| 11 gotaconstant(3); |
| 12 %OptimizeFunctionOnNextCall(gotaconstant); |
| 13 gotaconstant(3); |
| 14 |
| 15 function gotaconstant_truncated(x, y) { return x * y | 0; } |
| 16 assertEquals(45, gotaconstant_truncated(3, 15)); |
| 17 gotaconstant_truncated(3, 15); |
| 18 %OptimizeFunctionOnNextCall(gotaconstant_truncated); |
| 19 gotaconstant_truncated(3, 15); |
| 20 |
7 function test(x, y) { return x * y; } | 21 function test(x, y) { return x * y; } |
8 | 22 |
9 assertEquals(12, test(3, 4)); | 23 assertEquals(12, test(3, 4)); |
10 assertEquals(16, test(4, 4)); | 24 assertEquals(16, test(4, 4)); |
11 | 25 |
12 %OptimizeFunctionOnNextCall(test); | 26 %OptimizeFunctionOnNextCall(test); |
13 assertEquals(27, test(9, 3)); | 27 assertEquals(27, test(9, 3)); |
14 | 28 |
15 assertEquals(-0, test(-3, 0)); | 29 assertEquals(-0, test(-3, 0)); |
16 assertEquals(-0, test(0, -0)); | 30 assertEquals(-0, test(0, -0)); |
17 | 31 |
18 | 32 |
19 const SMI_MAX = (1 << 29) - 1 + (1 << 29); // Create without overflowing. | 33 const SMI_MAX = (1 << 29) - 1 + (1 << 29); // Create without overflowing. |
20 const SMI_MIN = -SMI_MAX - 1; // Create without overflowing. | 34 const SMI_MIN = -SMI_MAX - 1; // Create without overflowing. |
21 | 35 |
22 // multiply by 3 to avoid compiler optimizations that convert 2*x to x + x. | 36 // multiply by 3 to avoid compiler optimizations that convert 2*x to x + x. |
23 assertEquals(SMI_MAX + SMI_MAX + SMI_MAX, test(SMI_MAX, 3)); | 37 assertEquals(SMI_MAX + SMI_MAX + SMI_MAX, test(SMI_MAX, 3)); |
OLD | NEW |