Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(259)

Unified Diff: src/PNaClTranslator.cpp

Issue 982403002: Subzero: Switch file reading to be based on a DataStreamer and MemoryObject. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: cleanup Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/PNaClTranslator.h ('k') | src/main.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/PNaClTranslator.cpp
diff --git a/src/PNaClTranslator.cpp b/src/PNaClTranslator.cpp
index d0b099db28489a12f20f7522c5b597ccacc50854..2ff57c190cf22694ed768572ca05f46f5f447e7f 100644
--- a/src/PNaClTranslator.cpp
+++ b/src/PNaClTranslator.cpp
@@ -2992,43 +2992,27 @@ bool TopLevelParser::ParseBlock(unsigned BlockID) {
namespace Ice {
-void PNaClTranslator::translate(const std::string &IRFilename) {
- ErrorOr<std::unique_ptr<MemoryBuffer>> ErrOrFile =
- MemoryBuffer::getFileOrSTDIN(IRFilename);
- if (std::error_code EC = ErrOrFile.getError()) {
- errs() << "Error reading '" << IRFilename << "': " << EC.message() << "\n";
- ErrorStatus.assign(EC.value());
- return;
- }
-
- std::unique_ptr<MemoryBuffer> MemBuf(ErrOrFile.get().release());
- translateBuffer(IRFilename, MemBuf.get());
-}
-
void PNaClTranslator::translateBuffer(const std::string &IRFilename,
Derek Schuff 2015/03/06 21:56:05 so is translatebuffer still used now that it's not
jvoung (off chromium) 2015/03/06 22:34:53 translateBuffer is being used by: subzero/unittes
MemoryBuffer *MemBuf) {
- if (MemBuf->getBufferSize() % 4 != 0) {
- errs() << IRFilename
- << ": Bitcode stream should be a multiple of 4 bytes in length.\n";
- ErrorStatus.assign(EC_Bitcode);
- return;
- }
+ std::unique_ptr<MemoryObject> MemObj(getNonStreamedMemoryObject(
+ reinterpret_cast<const unsigned char *>(MemBuf->getBufferStart()),
+ reinterpret_cast<const unsigned char *>(MemBuf->getBufferEnd())));
+ translate(IRFilename, std::move(MemObj));
+}
- const unsigned char *BufPtr = (const unsigned char *)MemBuf->getBufferStart();
- const unsigned char *HeaderPtr = BufPtr;
- const unsigned char *EndBufPtr = BufPtr + MemBuf->getBufferSize();
+void PNaClTranslator::translate(const std::string &IRFilename,
+ std::unique_ptr<MemoryObject> &&MemObj) {
// Read header and verify it is good.
NaClBitcodeHeader Header;
- if (Header.Read(HeaderPtr, EndBufPtr) || !Header.IsSupported()) {
+ if (Header.Read(MemObj.get()) || !Header.IsSupported()) {
errs() << "Invalid PNaCl bitcode header.\n";
ErrorStatus.assign(EC_Bitcode);
return;
}
// Create a bitstream reader to read the bitcode file.
- NaClBitstreamReader InputStreamFile(BufPtr, EndBufPtr,
- Header.getHeaderSize());
+ NaClBitstreamReader InputStreamFile(MemObj.release(), Header.getHeaderSize());
NaClBitstreamCursor InputStream(InputStreamFile);
TopLevelParser Parser(*this, InputStream, ErrorStatus);
@@ -3047,6 +3031,12 @@ void PNaClTranslator::translateBuffer(const std::string &IRFilename,
<< "\n";
ErrorStatus.assign(EC_Bitcode);
}
+ if (InputStreamFile.getBitcodeBytes().getExtent() % 4 != 0) {
+ errs() << IRFilename
+ << ": Bitcode stream should be a multiple of 4 bytes in length.\n";
+ ErrorStatus.assign(EC_Bitcode);
+ return;
+ }
}
} // end of namespace Ice
« no previous file with comments | « src/PNaClTranslator.h ('k') | src/main.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698