Home | History | Annotate | Download | only in es6
      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: --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);
     37