| Index: base/sys_byteorder.h
|
| diff --git a/base/sys_byteorder.h b/base/sys_byteorder.h
|
| index 8d9066c70228bfd7c36ec0cb3a2afe30dc006a2d..9ee1827e1e6d8ae8ea0dbf2a6d30cefb953dd4d3 100644
|
| --- a/base/sys_byteorder.h
|
| +++ b/base/sys_byteorder.h
|
| @@ -13,6 +13,7 @@
|
|
|
| #include <stdint.h>
|
|
|
| +#include "base/logging.h"
|
| #include "build/build_config.h"
|
|
|
| #if defined(COMPILER_MSVC)
|
| @@ -46,6 +47,21 @@ inline uint64_t ByteSwap(uint64_t x) {
|
| #endif
|
| }
|
|
|
| +inline uintptr_t ByteSwapUintPtrT(uintptr_t x) {
|
| + // We do it this way because some build configurations are ILP32 even when
|
| + // defined(ARCH_CPU_64_BITS). Unfortunately, we can't use sizeof in #ifs. But,
|
| + // because these conditionals are constexprs, the irrelevant branches will
|
| + // likely be optimized away, so this construction should not result in code
|
| + // bloat.
|
| + if (sizeof(uintptr_t) == 4) {
|
| + return ByteSwap(static_cast<uint32_t>(x));
|
| + } else if (sizeof(uintptr_t) == 8) {
|
| + return ByteSwap(static_cast<uint64_t>(x));
|
| + } else {
|
| + NOTREACHED();
|
| + }
|
| +}
|
| +
|
| // Converts the bytes in |x| from host order (endianness) to little endian, and
|
| // returns the result.
|
| inline uint16_t ByteSwapToLE16(uint16_t x) {
|
|
|