Commit 964ec21e authored by bmeurer@chromium.org's avatar bmeurer@chromium.org

Fix MSVC build.

And while we are at it, use the stupid MSVC compiler intrinsics.

TEST=base-unittests/BitTest
TBR=jarin@chromium.org

Review URL: https://codereview.chromium.org/473773003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23123 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 9803a724
......@@ -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
......
......@@ -75,5 +75,7 @@
#undef GetObject
#undef CreateSemaphore
#undef Yield
#undef RotateRight32
#undef RotateRight64
#endif // V8_BASE_WIN32_HEADERS_H_
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment