| Index: src/base/bits.h
 | 
| diff --git a/src/base/bits.h b/src/base/bits.h
 | 
| index e6a733a45dbb24ce4c95a30a817b2de2b4ee2354..d681ba8ba317a7d6bf3c59a52b16f3c96be93050 100644
 | 
| --- a/src/base/bits.h
 | 
| +++ b/src/base/bits.h
 | 
| @@ -19,7 +19,7 @@ namespace base {
 | 
|  namespace bits {
 | 
|  
 | 
|  // CountPopulation32(value) returns the number of bits set in |value|.
 | 
| -inline uint32_t CountPopulation32(uint32_t value) {
 | 
| +inline unsigned CountPopulation32(uint32_t value) {
 | 
|  #if V8_HAS_BUILTIN_POPCOUNT
 | 
|    return __builtin_popcount(value);
 | 
|  #else
 | 
| @@ -28,20 +28,31 @@ inline uint32_t CountPopulation32(uint32_t value) {
 | 
|    value = ((value >> 4) & 0x0f0f0f0f) + (value & 0x0f0f0f0f);
 | 
|    value = ((value >> 8) & 0x00ff00ff) + (value & 0x00ff00ff);
 | 
|    value = ((value >> 16) & 0x0000ffff) + (value & 0x0000ffff);
 | 
| -  return value;
 | 
| +  return static_cast<unsigned>(value);
 | 
| +#endif
 | 
| +}
 | 
| +
 | 
| +
 | 
| +// CountPopulation64(value) returns the number of bits set in |value|.
 | 
| +inline unsigned CountPopulation64(uint64_t value) {
 | 
| +#if V8_HAS_BUILTIN_POPCOUNT
 | 
| +  return __builtin_popcountll(value);
 | 
| +#else
 | 
| +  return CountPopulation32(static_cast<uint32_t>(value)) +
 | 
| +         CountPopulation32(static_cast<uint32_t>(value >> 32));
 | 
|  #endif
 | 
|  }
 | 
|  
 | 
|  
 | 
|  // CountLeadingZeros32(value) returns the number of zero bits following the most
 | 
|  // significant 1 bit in |value| if |value| is non-zero, otherwise it returns 32.
 | 
| -inline uint32_t CountLeadingZeros32(uint32_t value) {
 | 
| +inline unsigned CountLeadingZeros32(uint32_t value) {
 | 
|  #if V8_HAS_BUILTIN_CLZ
 | 
|    return value ? __builtin_clz(value) : 32;
 | 
|  #elif V8_CC_MSVC
 | 
|    unsigned long result;  // NOLINT(runtime/int)
 | 
|    if (!_BitScanReverse(&result, value)) return 32;
 | 
| -  return static_cast<uint32_t>(31 - result);
 | 
| +  return static_cast<unsigned>(31 - result);
 | 
|  #else
 | 
|    value = value | (value >> 1);
 | 
|    value = value | (value >> 2);
 | 
| @@ -53,16 +64,33 @@ inline uint32_t CountLeadingZeros32(uint32_t value) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| +// CountLeadingZeros64(value) returns the number of zero bits following the most
 | 
| +// significant 1 bit in |value| if |value| is non-zero, otherwise it returns 64.
 | 
| +inline unsigned CountLeadingZeros64(uint64_t value) {
 | 
| +#if V8_HAS_BUILTIN_CLZ
 | 
| +  return value ? __builtin_clzll(value) : 64;
 | 
| +#else
 | 
| +  value = value | (value >> 1);
 | 
| +  value = value | (value >> 2);
 | 
| +  value = value | (value >> 4);
 | 
| +  value = value | (value >> 8);
 | 
| +  value = value | (value >> 16);
 | 
| +  value = value | (value >> 32);
 | 
| +  return CountPopulation64(~value);
 | 
| +#endif
 | 
| +}
 | 
| +
 | 
| +
 | 
|  // CountTrailingZeros32(value) returns the number of zero bits preceding the
 | 
|  // least significant 1 bit in |value| if |value| is non-zero, otherwise it
 | 
|  // returns 32.
 | 
| -inline uint32_t CountTrailingZeros32(uint32_t value) {
 | 
| +inline unsigned CountTrailingZeros32(uint32_t value) {
 | 
|  #if V8_HAS_BUILTIN_CTZ
 | 
|    return value ? __builtin_ctz(value) : 32;
 | 
|  #elif V8_CC_MSVC
 | 
|    unsigned long result;  // NOLINT(runtime/int)
 | 
|    if (!_BitScanForward(&result, value)) return 32;
 | 
| -  return static_cast<uint32_t>(result);
 | 
| +  return static_cast<unsigned>(result);
 | 
|  #else
 | 
|    if (value == 0) return 32;
 | 
|    unsigned count = 0;
 | 
| @@ -73,6 +101,22 @@ inline uint32_t CountTrailingZeros32(uint32_t value) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| +// CountTrailingZeros64(value) returns the number of zero bits preceding the
 | 
| +// least significant 1 bit in |value| if |value| is non-zero, otherwise it
 | 
| +// returns 64.
 | 
| +inline unsigned CountTrailingZeros64(uint64_t value) {
 | 
| +#if V8_HAS_BUILTIN_CTZ
 | 
| +  return value ? __builtin_ctzll(value) : 64;
 | 
| +#else
 | 
| +  if (value == 0) return 64;
 | 
| +  unsigned count = 0;
 | 
| +  for (value ^= value - 1; value >>= 1; ++count)
 | 
| +    ;
 | 
| +  return count;
 | 
| +#endif
 | 
| +}
 | 
| +
 | 
| +
 | 
|  // Returns true iff |value| is a power of 2.
 | 
|  inline bool IsPowerOfTwo32(uint32_t value) {
 | 
|    return value && !(value & (value - 1));
 | 
| 
 |