OLD | NEW |
| (Empty) |
1 // Copyright 2014 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: --harmony-maths --allow-natives-syntax | |
6 | |
7 [NaN, Infinity, -Infinity, 0, -0, "abc", "Infinity", "-Infinity", {}].forEach( | |
8 function(x) { | |
9 assertEquals(32, Math.clz32(x)); | |
10 } | |
11 ); | |
12 | |
13 function testclz(x) { | |
14 for (var i = 0; i < 33; i++) { | |
15 if (x & 0x80000000) return i; | |
16 x <<= 1; | |
17 } | |
18 return 32; | |
19 } | |
20 | |
21 | |
22 function f(e) { | |
23 var max = Math.pow(2, e); | |
24 for (var x = 0; x < max; x = x * 1.01 + 1) { | |
25 assertEquals(testclz(x), Math.clz32(x)); | |
26 assertEquals(testclz(-x), Math.clz32(-x)); | |
27 assertEquals(testclz(x), Math.clz32({ valueOf: function() { return x; } })); | |
28 assertEquals(testclz(-x), | |
29 Math.clz32({ toString: function() { return -x; } })); | |
30 } | |
31 } | |
32 | |
33 f(5); | |
34 f(5); | |
35 %OptimizeFunctionOnNextCall(f); | |
36 f(40); | |
OLD | NEW |