[MCJIT] Move endian-aware read/writes from RuntimeDyldMachO into
[oota-llvm.git] / lib / ExecutionEngine / RuntimeDyld / RuntimeDyldChecker.cpp
index 72aae96e0c636d6f0b8990b191e3f8149c453bf6..aa4480226ac14348bc3d5a6fbc4116c9e6ed602e 100644 (file)
@@ -703,22 +703,8 @@ uint64_t RuntimeDyldCheckerImpl::readMemoryAtAddr(uint64_t SrcAddr,
                                                   unsigned Size) const {
   uintptr_t PtrSizedAddr = static_cast<uintptr_t>(SrcAddr);
   assert(PtrSizedAddr == SrcAddr && "Linker memory pointer out-of-range.");
-  uint64_t Result = 0;
   uint8_t *Src = reinterpret_cast<uint8_t*>(PtrSizedAddr);
-  uint8_t *Dst = reinterpret_cast<uint8_t*>(&Result);
-
-  // If host and target endianness match use memcpy, otherwise copy in reverse
-  // order.
-  if (getRTDyld().IsTargetLittleEndian == sys::IsLittleEndianHost) {
-    if (!sys::IsLittleEndianHost)
-      Dst += sizeof(Result) - Size;
-    memcpy(Dst, Src, Size);
-  } else {
-    Dst += Size - 1;
-    for (unsigned i = 0; i < Size; ++i)
-      *Dst-- = *Src++;
-  }
-  return Result;
+  return getRTDyld().readBytesUnaligned(Src, Size);
 }
 
 std::pair<uint64_t, std::string> RuntimeDyldCheckerImpl::getStubAddrFor(