OLD | NEW |
(Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 // Flags: --allow-natives-syntax |
| 6 |
| 7 function signInt32(i) { |
| 8 i = i|0; |
| 9 return Math.sign(i); |
| 10 } |
| 11 |
| 12 signInt32(0); |
| 13 signInt32(2); |
| 14 %OptimizeFunctionOnNextCall(signInt32); |
| 15 assertEquals(1, signInt32(1)); |
| 16 assertEquals(0, signInt32(0)); |
| 17 assertEquals(-1, signInt32(-1)); |
| 18 assertEquals(-1, signInt32(-1)); |
| 19 assertEquals(1, signInt32(2147483647)); |
| 20 assertEquals(-1, signInt32(2147483648)); |
| 21 assertEquals(-1, signInt32(-2147483648)); |
| 22 assertEquals(0, signInt32(NaN)); |
| 23 assertEquals(0, signInt32(undefined)); |
| 24 assertEquals(0, signInt32(-0)); |
| 25 |
| 26 function signFloat64(i) { |
| 27 return Math.sign(+i); |
| 28 } |
| 29 |
| 30 signFloat64(0.1); |
| 31 signFloat64(-0.1); |
| 32 %OptimizeFunctionOnNextCall(signFloat64); |
| 33 assertEquals(1, signFloat64(1)); |
| 34 assertEquals(1, signFloat64(0.001)); |
| 35 assertEquals(-1, signFloat64(-0.002)); |
| 36 assertEquals(1, signFloat64(1e100)); |
| 37 assertEquals(-1, signFloat64(-2e100)); |
| 38 assertEquals(0, signFloat64(0)); |
| 39 assertEquals(Infinity, 1/signFloat64(0)); |
| 40 assertEquals(-1, signFloat64(-1)); |
| 41 assertEquals(-1, signFloat64(-1)); |
| 42 assertEquals(1, signFloat64(2147483647)); |
| 43 assertEquals(1, signFloat64(2147483648)); |
| 44 assertEquals(-1, signFloat64(-2147483647)); |
| 45 assertEquals(-1, signFloat64(-2147483648)); |
| 46 assertEquals(-1, signFloat64(-2147483649)); |
| 47 assertEquals(-0, signFloat64(-0)); |
| 48 assertEquals(NaN, signFloat64(NaN)); |
| 49 assertEquals(NaN, signFloat64(undefined)); |
| 50 assertEquals(1, signFloat64(Infinity)); |
| 51 assertEquals(-1, signFloat64(-Infinity)); |
OLD | NEW |