OLD | NEW |
---|---|
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
Benedikt Meurer
2016/07/17 17:44:07
Can you move this file into mjsunit/compiler/ dire
mvstanton
2016/07/18 08:48:58
Done.
| |
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 |