diff --git a/llvm/include/llvm/System/Memory.h b/llvm/include/llvm/System/Memory.h
index 8c1c37a07ccca477758b71b5a9f11acc6ea581f9..d692b95c271f98fb7af12e1a3e0ff92d767b07a9 100644
--- a/llvm/include/llvm/System/Memory.h
+++ b/llvm/include/llvm/System/Memory.h
@@ -57,6 +57,14 @@ namespace sys {
                                      const MemoryBlock *NearBlock,
                                      std::string *ErrMsg = 0);
 
+      /// This method allocates a block of Read/Write memory.  This memory
+      /// needs to have executable permissions set before it can be used
+      /// to execute JIT'ed code.
+      ///
+      /// On success, this returns a non-null memory block, otherwise it returns
+      /// a null memory block and fills in *ErrMsg.
+      /// 
+      /// @brief Allocate Read/Write/Execute memory.
       static MemoryBlock AllocateRW(unsigned NumBytes,
                                     const MemoryBlock *NearBlock,
                                     std::string *ErrMsg = 0);
diff --git a/llvm/lib/System/Unix/Memory.inc b/llvm/lib/System/Unix/Memory.inc
index 164988793f74b0fc9314aa5d65e9ba23f9e115be..e0bf8d8dfdf61fb34d5f2b8a75d317e0010c2385 100644
--- a/llvm/lib/System/Unix/Memory.inc
+++ b/llvm/lib/System/Unix/Memory.inc
@@ -103,7 +103,7 @@ llvm::sys::Memory::AllocateRW(unsigned NumBytes, const MemoryBlock* NearBlock,
                     flags, fd, 0);
   if (pa == MAP_FAILED) {
     if (NearBlock) //Try again without a near hint
-      return AllocateRWX(NumBytes, 0);
+      return AllocateRW(NumBytes, 0);
 
     MakeErrMsg(ErrMsg, "Can't allocate RWX Memory");
     return MemoryBlock();