Browse Source

src: remove __builtin_bswap16 call

Not supported by apple-gcc and I'm not convinced it's worth adding more
preprocessor hacks when it should be easy as pie for the compiler to
to optimize the byteswap.  If it doesn't, fix the compiler.

Fixes: https://github.com/nodejs/node/issues/4284
PR-URL: https://github.com/nodejs/node/pull/4290
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
process-exit-stdio-flushing
Ben Noordhuis 9 years ago
parent
commit
f176b31e74
  1. 9
      src/util-inl.h

9
src/util-inl.h

@ -199,15 +199,8 @@ TypeName* Unwrap(v8::Local<v8::Object> object) {
} }
void SwapBytes(uint16_t* dst, const uint16_t* src, size_t buflen) { void SwapBytes(uint16_t* dst, const uint16_t* src, size_t buflen) {
for (size_t i = 0; i < buflen; i++) { for (size_t i = 0; i < buflen; i += 1)
// __builtin_bswap16 generates more efficient code with
// g++ 4.8 on PowerPC and other big-endian archs
#ifdef __GNUC__
dst[i] = __builtin_bswap16(src[i]);
#else
dst[i] = (src[i] << 8) | (src[i] >> 8); dst[i] = (src[i] << 8) | (src[i] >> 8);
#endif
}
} }

Loading…
Cancel
Save