junaire added a comment.

In D123436#3475002 <https://reviews.llvm.org/D123436#3475002>, @dblaikie wrote:

> In D123436#3462567 <https://reviews.llvm.org/D123436#3462567>, @dblaikie 
> wrote:
>
>> Perhaps GlobalModuleIndex should create the cursor itself - it's being 
>> handed the buffer anyway?
>
> Ping on this ^ - would this be a better direction that addresses the concerns?

Sorry about missing this! :(
However, I'm not sure that I understand your idea. Do you mean we can simply 
pass the buffer to the `GlobalModuleIndex` then we can construct the cursor in 
the constructor itself? IMHO, we can't. that's because we need to use the 
cursor to sniff for the signature of the buffer, and we will return an error if 
it is failed. Please let me know if I understand you wrong :)

    /// The main bitstream cursor for the main block.
    llvm::BitstreamCursor Cursor(*Buffer);
  
    // Sniff for the signature.
    for (unsigned char C : {'B', 'C', 'G', 'I'}) {
      if (Expected<llvm::SimpleBitstreamCursor::word_t> Res = Cursor.Read(8)) {
        if (Res.get() != C)
          return std::make_pair(
              nullptr, llvm::createStringError(std::errc::illegal_byte_sequence,
                                               "expected signature BCGI"));
      } else
        return std::make_pair(nullptr, Res.takeError());
    }
  
    return std::make_pair(new GlobalModuleIndex(std::move(Buffer), 
std::move(Cursor)),
                          llvm::Error::success());
  }


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D123436/new/

https://reviews.llvm.org/D123436

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to