|
| 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)); |
0 commit comments