<br><br><div class="gmail_quote">On Thu Nov 06 2014 at 6:50:46 PM Rafael Avila de Espindola <<a href="mailto:rafael.espindola@gmail.com">rafael.espindola@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div><br><br>Sent from my iPhone</div></div><div dir="auto"><div><br>On Nov 6, 2014, at 20:24, Eric Christopher <<a href="mailto:echristo@gmail.com" target="_blank">echristo@gmail.com</a>> wrote:<br><br></div><blockquote type="cite"><div>Out of curiosity, where are you going with this?<br><br></div></blockquote><div><br></div><div><br></div></div><div dir="auto"><div>Not sure yet.</div><div><br></div><div>I was trying to read 64 bits at a time in the bitcode reader.</div><div><br></div><div>I found that an issue was that we can have files that are not multiple of 64 bits. The existing api will not return the number of bytes read as a sane read method should.</div><div><br></div><div>Trying to change that I found quiet a few peculiar implementations and started removing them.</div><div><br></div><div>The use in getinstruction is also pretty odd. Even x86 has a maximum instruction size. We could probably pass a StringRef.</div><div><br></div><div>Any thoughts on it?</div></div></blockquote><div><br></div><div>I'd probably prefer an ArrayRef tbh. The "let's use a string ref since it's just a char * and that can point to bytes" really bugs me.</div><div><br></div><div>-eric</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div><br></div><div><br></div><br><blockquote type="cite"><div><div>-eric</div><br><div class="gmail_quote">On Thu Nov 06 2014 at 5:23:12 PM Rafael Espindola <<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: rafael<br>
Date: Thu Nov  6 19:09:51 2014<br>
New Revision: 221503<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=221503&view=rev" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project?rev=221503&view=rev</a><br>
Log:<br>
Use a StringRefMemoryObject. NFC.<br>
<br>
Modified:<br>
    llvm/trunk/lib/MC/<u></u>MCDisassembler/Disassembler.<u></u>cpp<br>
<br>
Modified: llvm/trunk/lib/MC/<u></u>MCDisassembler/Disassembler.<u></u>cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCDisassembler/Disassembler.cpp?rev=221503&r1=221502&r2=221503&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/lib/MC/<u></u>MCDisassembler/Disassembler.<u></u>cpp?rev=221503&r1=221502&r2=<u></u>221503&view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- llvm/trunk/lib/MC/<u></u>MCDisassembler/Disassembler.<u></u>cpp (original)<br>
+++ llvm/trunk/lib/MC/<u></u>MCDisassembler/Disassembler.<u></u>cpp Thu Nov  6 19:09:51 2014<br>
@@ -21,7 +21,7 @@<br>
 #include "llvm/MC/MCSymbolizer.h"<br>
 #include "llvm/Support/ErrorHandling.h"<br>
 #include "llvm/Support/FormattedStream.<u></u>h"<br>
-#include "llvm/Support/MemoryObject.h"<br>
+#include "llvm/Support/<u></u>StringRefMemoryObject.h"<br>
 #include "llvm/Support/TargetRegistry.<u></u>h"<br>
<br>
 using namespace llvm;<br>
@@ -122,30 +122,6 @@ void LLVMDisasmDispose(<u></u>LLVMDisasmContext<br>
   delete DC;<br>
 }<br>
<br>
-namespace {<br>
-//<br>
-// The memory object created by LLVMDisasmInstruction().<br>
-//<br>
-class DisasmMemoryObject : public MemoryObject {<br>
-  uint8_t *Bytes;<br>
-  uint64_t Size;<br>
-  uint64_t BasePC;<br>
-public:<br>
-  DisasmMemoryObject(uint8_t *bytes, uint64_t size, uint64_t basePC) :<br>
-                     Bytes(bytes), Size(size), BasePC(basePC) {}<br>
-<br>
-  uint64_t getBase() const override { return BasePC; }<br>
-  uint64_t getExtent() const override { return Size; }<br>
-<br>
-  int readByte(uint64_t Addr, uint8_t *Byte) const override {<br>
-    if (Addr - BasePC >= Size)<br>
-      return -1;<br>
-    *Byte = Bytes[Addr - BasePC];<br>
-    return 0;<br>
-  }<br>
-};<br>
-} // end anonymous namespace<br>
-<br>
 /// \brief Emits the comments that are stored in \p DC comment stream.<br>
 /// Each comment in the comment stream must end with a newline.<br>
 static void emitComments(LLVMDisasmContext *DC,<br>
@@ -269,7 +245,8 @@ size_t LLVMDisasmInstruction(<u></u>LLVMDisasmC<br>
                              size_t OutStringSize){<br>
   LLVMDisasmContext *DC = (LLVMDisasmContext *)DCR;<br>
   // Wrap the pointer to the Bytes, BytesSize and PC in a MemoryObject.<br>
-  DisasmMemoryObject MemoryObject(Bytes, BytesSize, PC);<br>
+  StringRef Data((const char*) Bytes, BytesSize);<br>
+  StringRefMemoryObject MemoryObject(Data, PC);<br>
<br>
   uint64_t Size;<br>
   MCInst Inst;<br>
<br>
<br>
______________________________<u></u>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/llvm-commits</a><br>
</blockquote></div>
</div></blockquote></div></blockquote></div>