| 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 |
| 6 |
| 5 function test(x, y) { return x * y; } | 7 function test(x, y) { return x * y; } |
| 6 | 8 |
| 7 assertEquals(8, test(2, 4)); | 9 assertEquals(12, test(3, 4)); |
| 10 assertEquals(16, test(4, 4)); |
| 11 |
| 12 %OptimizeFunctionOnNextCall(test); |
| 13 assertEquals(27, test(9, 3)); |
| 14 |
| 8 assertEquals(-0, test(-3, 0)); | 15 assertEquals(-0, test(-3, 0)); |
| 9 assertEquals(-0, test(0, -0)); | 16 assertEquals(-0, test(0, -0)); |
| 10 | 17 |
| 18 |
| 11 const SMI_MAX = (1 << 29) - 1 + (1 << 29); // Create without overflowing. | 19 const SMI_MAX = (1 << 29) - 1 + (1 << 29); // Create without overflowing. |
| 12 const SMI_MIN = -SMI_MAX - 1; // Create without overflowing. | 20 const SMI_MIN = -SMI_MAX - 1; // Create without overflowing. |
| 13 | 21 |
| 14 // multiply by 3 to avoid compiler optimizations that convert 2*x to x + x. | 22 // multiply by 3 to avoid compiler optimizations that convert 2*x to x + x. |
| 15 assertEquals(SMI_MAX + SMI_MAX + SMI_MAX, test(SMI_MAX, 3)); | 23 assertEquals(SMI_MAX + SMI_MAX + SMI_MAX, test(SMI_MAX, 3)); |
| OLD | NEW |