|  | // Copyright 2016 the V8 project authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | // Flags: --allow-natives-syntax | 
|  |  | 
|  | function signInt32(i) { | 
|  | i = i|0; | 
|  | return Math.sign(i); | 
|  | } | 
|  |  | 
|  | %PrepareFunctionForOptimization(signInt32); | 
|  | signInt32(0); | 
|  | signInt32(2); | 
|  | %OptimizeFunctionOnNextCall(signInt32); | 
|  | assertEquals(1, signInt32(1)); | 
|  | assertEquals(0, signInt32(0)); | 
|  | assertEquals(-1, signInt32(-1)); | 
|  | assertEquals(-1, signInt32(-1)); | 
|  | assertEquals(1, signInt32(2147483647)); | 
|  | assertEquals(-1, signInt32(2147483648)); | 
|  | assertEquals(-1, signInt32(-2147483648)); | 
|  | assertEquals(0, signInt32(NaN)); | 
|  | assertEquals(0, signInt32(undefined)); | 
|  | assertEquals(0, signInt32(-0)); | 
|  |  | 
|  | function signFloat64(i) { | 
|  | return Math.sign(+i); | 
|  | } | 
|  |  | 
|  | %PrepareFunctionForOptimization(signFloat64); | 
|  | signFloat64(0.1); | 
|  | signFloat64(-0.1); | 
|  | %OptimizeFunctionOnNextCall(signFloat64); | 
|  | assertEquals(1, signFloat64(1)); | 
|  | assertEquals(1, signFloat64(0.001)); | 
|  | assertEquals(-1, signFloat64(-0.002)); | 
|  | assertEquals(1, signFloat64(1e100)); | 
|  | assertEquals(-1, signFloat64(-2e100)); | 
|  | assertEquals(0, signFloat64(0)); | 
|  | assertEquals(Infinity, 1/signFloat64(0)); | 
|  | assertEquals(-1, signFloat64(-1)); | 
|  | assertEquals(-1, signFloat64(-1)); | 
|  | assertEquals(1, signFloat64(2147483647)); | 
|  | assertEquals(1, signFloat64(2147483648)); | 
|  | assertEquals(-1, signFloat64(-2147483647)); | 
|  | assertEquals(-1, signFloat64(-2147483648)); | 
|  | assertEquals(-1, signFloat64(-2147483649)); | 
|  | assertEquals(-0, signFloat64(-0)); | 
|  | assertEquals(NaN, signFloat64(NaN)); | 
|  | assertEquals(NaN, signFloat64(undefined)); | 
|  | assertEquals(1, signFloat64(Infinity)); | 
|  | assertEquals(-1, signFloat64(-Infinity)); |