[llvm] r221503 - Use a StringRefMemoryObject. NFC.

Eric Christopher echristo at gmail.com
Tue Nov 11 15:05:40 PST 2014


On Thu Nov 06 2014 at 6:50:46 PM Rafael Avila de Espindola <
rafael.espindola at gmail.com> wrote:

>
>
> Sent from my iPhone
>
> On Nov 6, 2014, at 20:24, Eric Christopher <echristo at gmail.com> wrote:
>
> Out of curiosity, where are you going with this?
>
>
>
> Not sure yet.
>
> I was trying to read 64 bits at a time in the bitcode reader.
>
> 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.
>
> Trying to change that I found quiet a few peculiar implementations and
> started removing them.
>
> The use in getinstruction is also pretty odd. Even x86 has a maximum
> instruction size. We could probably pass a StringRef.
>
> Any thoughts on it?
>

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.

-eric


>
>
>
> -eric
>
> On Thu Nov 06 2014 at 5:23:12 PM Rafael Espindola <
> rafael.espindola at gmail.com> wrote:
>
>> Author: rafael
>> Date: Thu Nov  6 19:09:51 2014
>> New Revision: 221503
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=221503&view=rev
>> Log:
>> Use a StringRefMemoryObject. NFC.
>>
>> Modified:
>>     llvm/trunk/lib/MC/MCDisassembler/Disassembler.cpp
>>
>> Modified: llvm/trunk/lib/MC/MCDisassembler/Disassembler.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/
>> MCDisassembler/Disassembler.cpp?rev=221503&r1=221502&r2=221503&view=diff
>> ============================================================
>> ==================
>> --- llvm/trunk/lib/MC/MCDisassembler/Disassembler.cpp (original)
>> +++ llvm/trunk/lib/MC/MCDisassembler/Disassembler.cpp Thu Nov  6
>> 19:09:51 2014
>> @@ -21,7 +21,7 @@
>>  #include "llvm/MC/MCSymbolizer.h"
>>  #include "llvm/Support/ErrorHandling.h"
>>  #include "llvm/Support/FormattedStream.h"
>> -#include "llvm/Support/MemoryObject.h"
>> +#include "llvm/Support/StringRefMemoryObject.h"
>>  #include "llvm/Support/TargetRegistry.h"
>>
>>  using namespace llvm;
>> @@ -122,30 +122,6 @@ void LLVMDisasmDispose(LLVMDisasmContext
>>    delete DC;
>>  }
>>
>> -namespace {
>> -//
>> -// The memory object created by LLVMDisasmInstruction().
>> -//
>> -class DisasmMemoryObject : public MemoryObject {
>> -  uint8_t *Bytes;
>> -  uint64_t Size;
>> -  uint64_t BasePC;
>> -public:
>> -  DisasmMemoryObject(uint8_t *bytes, uint64_t size, uint64_t basePC) :
>> -                     Bytes(bytes), Size(size), BasePC(basePC) {}
>> -
>> -  uint64_t getBase() const override { return BasePC; }
>> -  uint64_t getExtent() const override { return Size; }
>> -
>> -  int readByte(uint64_t Addr, uint8_t *Byte) const override {
>> -    if (Addr - BasePC >= Size)
>> -      return -1;
>> -    *Byte = Bytes[Addr - BasePC];
>> -    return 0;
>> -  }
>> -};
>> -} // end anonymous namespace
>> -
>>  /// \brief Emits the comments that are stored in \p DC comment stream.
>>  /// Each comment in the comment stream must end with a newline.
>>  static void emitComments(LLVMDisasmContext *DC,
>> @@ -269,7 +245,8 @@ size_t LLVMDisasmInstruction(LLVMDisasmC
>>                               size_t OutStringSize){
>>    LLVMDisasmContext *DC = (LLVMDisasmContext *)DCR;
>>    // Wrap the pointer to the Bytes, BytesSize and PC in a MemoryObject.
>> -  DisasmMemoryObject MemoryObject(Bytes, BytesSize, PC);
>> +  StringRef Data((const char*) Bytes, BytesSize);
>> +  StringRefMemoryObject MemoryObject(Data, PC);
>>
>>    uint64_t Size;
>>    MCInst Inst;
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141111/13cdaa9d/attachment.html>


More information about the llvm-commits mailing list