Skip to content

Commit 39d6519

Browse files
jaro-sevcikCommit bot
authored andcommitted
[turbofan] Fix Math.sign.
Review-Url: https://codereview.chromium.org/2294143004 Cr-Commit-Position: refs/heads/master@{#39073}
1 parent 5d6eabb commit 39d6519

2 files changed

Lines changed: 52 additions & 1 deletion

File tree

src/compiler/simplified-lowering.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2849,7 +2849,7 @@ Node* SimplifiedLowering::Float64Sign(Node* const node) {
28492849
graph()->NewNode(
28502850
common()->Select(MachineRepresentation::kFloat64),
28512851
graph()->NewNode(machine()->Float64LessThan(), zero, input), one,
2852-
zero));
2852+
input));
28532853
}
28542854

28552855
Node* SimplifiedLowering::Int32Abs(Node* const node) {

test/mjsunit/compiler/math-sign.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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

Comments
 (0)