| Index: src/base/bits.h
|
| diff --git a/src/base/bits.h b/src/base/bits.h
|
| index e16eed1b67c9da5c45cec66892da4ed33852c7ad..2cfce1edc2be934a30bc0965cf20c32119c9f871 100644
|
| --- a/src/base/bits.h
|
| +++ b/src/base/bits.h
|
| @@ -6,22 +6,43 @@
|
| #define V8_BASE_BITS_H_
|
|
|
| #include "include/v8stdint.h"
|
| +#if V8_OS_WIN32
|
| +#include "src/base/win32-headers.h"
|
| +#endif
|
|
|
| namespace v8 {
|
| namespace base {
|
| namespace bits {
|
|
|
| +#if V8_CC_MSVC
|
| +
|
| +#pragma intrinsic(_rotr)
|
| +#pragma intrinsic(_rotr64)
|
| +
|
| +inline uint32_t RotateRight32(uint32_t value, uint32_t shift) {
|
| + return _rotr(value, shift);
|
| +}
|
| +
|
| +
|
| +inline uint64_t RotateRight64(uint64_t value, uint32_t shift) {
|
| + return _rotr64(value, shift);
|
| +}
|
| +
|
| +#else // V8_CC_MSVC
|
| +
|
| inline uint32_t RotateRight32(uint32_t value, uint32_t shift) {
|
| if (shift == 0) return value;
|
| return (value >> shift) | (value << (32 - shift));
|
| }
|
|
|
|
|
| -inline uint64_t RotateRight64(uint64_t value, uint64_t shift) {
|
| +inline uint64_t RotateRight64(uint64_t value, uint32_t shift) {
|
| if (shift == 0) return value;
|
| return (value >> shift) | (value << (64 - shift));
|
| }
|
|
|
| +#endif // V8_CC_MSVC
|
| +
|
| } // namespace bits
|
| } // namespace base
|
| } // namespace v8
|
|
|