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

Unified Diff: include/llvm/Bitcode/NaCl/NaClBitstreamReader.h

Issue 14314016: Copy LLVM bitcode reader to generate a PNaCl wire format reader. (Closed) Base URL: http://git.chromium.org/native_client/pnacl-llvm.git@master
Patch Set: Created 7 years, 8 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 | « no previous file | include/llvm/Bitcode/NaCl/NaClLLVMBitCodes.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: include/llvm/Bitcode/NaCl/NaClBitstreamReader.h
diff --git a/include/llvm/Bitcode/BitstreamReader.h b/include/llvm/Bitcode/NaCl/NaClBitstreamReader.h
similarity index 83%
copy from include/llvm/Bitcode/BitstreamReader.h
copy to include/llvm/Bitcode/NaCl/NaClBitstreamReader.h
index 2d2976cde13ca867b8a1344c25979a0569203ffa..238ce5275a1668f899cf496ca6718673844c6c82 100644
--- a/include/llvm/Bitcode/BitstreamReader.h
+++ b/include/llvm/Bitcode/NaCl/NaClBitstreamReader.h
@@ -1,4 +1,5 @@
-//===- BitstreamReader.h - Low-level bitstream reader interface -*- C++ -*-===//
+//===- NaClBitstreamReader.h -----------------------------------*- C++ -*-===//
+// Low-level bitstream reader interface
//
// The LLVM Compiler Infrastructure
//
@@ -12,11 +13,11 @@
//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_BITCODE_BITSTREAMREADER_H
-#define LLVM_BITCODE_BITSTREAMREADER_H
+#ifndef LLVM_BITCODE_NACL_NACLBITSTREAMREADER_H
+#define LLVM_BITCODE_NACL_NACLBITSTREAMREADER_H
#include "llvm/ADT/OwningPtr.h"
-#include "llvm/Bitcode/BitCodes.h"
+#include "llvm/Bitcode/NaCl/NaClLLVMBitCodes.h"
#include "llvm/Support/Endian.h"
#include "llvm/Support/StreamableMemoryObject.h"
#include <climits>
@@ -27,12 +28,12 @@ namespace llvm {
class Deserializer;
-/// BitstreamReader - This class is used to read from an LLVM bitcode stream,
-/// maintaining information that is global to decoding the entire file. While
-/// a file is being read, multiple cursors can be independently advanced or
-/// skipped around within the file. These are represented by the
-/// BitstreamCursor class.
-class BitstreamReader {
+/// NaClBitstreamReader - This class is used to read from a NaCl
+/// bitcode wire format stream, maintaining information that is global
+/// to decoding the entire file. While a file is being read, multiple
+/// cursors can be independently advanced or skipped around within the
+/// file. These are represented by the NaClBitstreamCursor class.
+class NaClBitstreamReader {
public:
/// BlockInfo - This contains information emitted to BLOCKINFO_BLOCK blocks.
/// These describe abbreviations that all blocks of the specified ID inherit.
@@ -53,18 +54,18 @@ private:
/// uses this.
bool IgnoreBlockInfoNames;
- BitstreamReader(const BitstreamReader&) LLVM_DELETED_FUNCTION;
- void operator=(const BitstreamReader&) LLVM_DELETED_FUNCTION;
+ NaClBitstreamReader(const NaClBitstreamReader&) LLVM_DELETED_FUNCTION;
+ void operator=(const NaClBitstreamReader&) LLVM_DELETED_FUNCTION;
public:
- BitstreamReader() : IgnoreBlockInfoNames(true) {
+ NaClBitstreamReader() : IgnoreBlockInfoNames(true) {
}
- BitstreamReader(const unsigned char *Start, const unsigned char *End) {
+ NaClBitstreamReader(const unsigned char *Start, const unsigned char *End) {
IgnoreBlockInfoNames = true;
init(Start, End);
}
- BitstreamReader(StreamableMemoryObject *bytes) {
+ NaClBitstreamReader(StreamableMemoryObject *bytes) {
BitcodeBytes.reset(bytes);
}
@@ -75,7 +76,7 @@ public:
StreamableMemoryObject &getBitcodeBytes() { return *BitcodeBytes; }
- ~BitstreamReader() {
+ ~NaClBitstreamReader() {
// Free the BlockInfoRecords.
while (!BlockInfoRecords.empty()) {
BlockInfo &Info = BlockInfoRecords.back();
@@ -127,15 +128,15 @@ public:
};
-/// BitstreamEntry - When advancing through a bitstream cursor, each advance can
-/// discover a few different kinds of entries:
+/// NaClBitstreamEntry - When advancing through a bitstream cursor,
+/// each advance can discover a few different kinds of entries:
/// Error - Malformed bitcode was found.
/// EndBlock - We've reached the end of the current block, (or the end of the
/// file, which is treated like a series of EndBlock records.
/// SubBlock - This is the start of a new subblock of a specific ID.
/// Record - This is a record with a specific AbbrevID.
///
-struct BitstreamEntry {
+struct NaClBitstreamEntry {
enum {
Error,
EndBlock,
@@ -145,29 +146,29 @@ struct BitstreamEntry {
unsigned ID;
- static BitstreamEntry getError() {
- BitstreamEntry E; E.Kind = Error; return E;
+ static NaClBitstreamEntry getError() {
+ NaClBitstreamEntry E; E.Kind = Error; return E;
}
- static BitstreamEntry getEndBlock() {
- BitstreamEntry E; E.Kind = EndBlock; return E;
+ static NaClBitstreamEntry getEndBlock() {
+ NaClBitstreamEntry E; E.Kind = EndBlock; return E;
}
- static BitstreamEntry getSubBlock(unsigned ID) {
- BitstreamEntry E; E.Kind = SubBlock; E.ID = ID; return E;
+ static NaClBitstreamEntry getSubBlock(unsigned ID) {
+ NaClBitstreamEntry E; E.Kind = SubBlock; E.ID = ID; return E;
}
- static BitstreamEntry getRecord(unsigned AbbrevID) {
- BitstreamEntry E; E.Kind = Record; E.ID = AbbrevID; return E;
+ static NaClBitstreamEntry getRecord(unsigned AbbrevID) {
+ NaClBitstreamEntry E; E.Kind = Record; E.ID = AbbrevID; return E;
}
};
-/// BitstreamCursor - This represents a position within a bitcode file. There
-/// may be multiple independent cursors reading within one bitstream, each
-/// maintaining their own local state.
+/// NaClBitstreamCursor - This represents a position within a bitcode
+/// file. There may be multiple independent cursors reading within
+/// one bitstream, each maintaining their own local state.
///
-/// Unlike iterators, BitstreamCursors are heavy-weight objects that should not
-/// be passed by value.
-class BitstreamCursor {
+/// Unlike iterators, NaClBitstreamCursors are heavy-weight objects
+/// that should not be passed by value.
+class NaClBitstreamCursor {
friend class Deserializer;
- BitstreamReader *BitStream;
+ NaClBitstreamReader *BitStream;
size_t NextChar;
@@ -201,20 +202,21 @@ class BitstreamCursor {
public:
- BitstreamCursor() : BitStream(0), NextChar(0) {
+ NaClBitstreamCursor() : BitStream(0), NextChar(0) {
}
- BitstreamCursor(const BitstreamCursor &RHS) : BitStream(0), NextChar(0) {
+ NaClBitstreamCursor(const NaClBitstreamCursor &RHS)
+ : BitStream(0), NextChar(0) {
operator=(RHS);
}
- explicit BitstreamCursor(BitstreamReader &R) : BitStream(&R) {
+ explicit NaClBitstreamCursor(NaClBitstreamReader &R) : BitStream(&R) {
NextChar = 0;
CurWord = 0;
BitsInCurWord = 0;
CurCodeSize = 2;
}
- void init(BitstreamReader &R) {
+ void init(NaClBitstreamReader &R) {
freeState();
BitStream = &R;
@@ -224,11 +226,11 @@ public:
CurCodeSize = 2;
}
- ~BitstreamCursor() {
+ ~NaClBitstreamCursor() {
freeState();
}
- void operator=(const BitstreamCursor &RHS);
+ void operator=(const NaClBitstreamCursor &RHS);
void freeState();
@@ -260,10 +262,10 @@ public:
return NextChar*CHAR_BIT - BitsInCurWord;
}
- BitstreamReader *getBitStreamReader() {
+ NaClBitstreamReader *getBitStreamReader() {
return BitStream;
}
- const BitstreamReader *getBitStreamReader() const {
+ const NaClBitstreamReader *getBitStreamReader() const {
return BitStream;
}
@@ -281,18 +283,18 @@ public:
/// advance - Advance the current bitstream, returning the next entry in the
/// stream.
- BitstreamEntry advance(unsigned Flags = 0) {
+ NaClBitstreamEntry advance(unsigned Flags = 0) {
while (1) {
unsigned Code = ReadCode();
if (Code == bitc::END_BLOCK) {
// Pop the end of the block unless Flags tells us not to.
if (!(Flags & AF_DontPopBlockAtEnd) && ReadBlockEnd())
- return BitstreamEntry::getError();
- return BitstreamEntry::getEndBlock();
+ return NaClBitstreamEntry::getError();
+ return NaClBitstreamEntry::getEndBlock();
}
if (Code == bitc::ENTER_SUBBLOCK)
- return BitstreamEntry::getSubBlock(ReadSubBlockID());
+ return NaClBitstreamEntry::getSubBlock(ReadSubBlockID());
if (Code == bitc::DEFINE_ABBREV &&
!(Flags & AF_DontAutoprocessAbbrevs)) {
@@ -302,22 +304,22 @@ public:
continue;
}
- return BitstreamEntry::getRecord(Code);
+ return NaClBitstreamEntry::getRecord(Code);
}
}
/// advanceSkippingSubblocks - This is a convenience function for clients that
/// don't expect any subblocks. This just skips over them automatically.
- BitstreamEntry advanceSkippingSubblocks(unsigned Flags = 0) {
+ NaClBitstreamEntry advanceSkippingSubblocks(unsigned Flags = 0) {
while (1) {
// If we found a normal entry, return it.
- BitstreamEntry Entry = advance(Flags);
- if (Entry.Kind != BitstreamEntry::SubBlock)
+ NaClBitstreamEntry Entry = advance(Flags);
+ if (Entry.Kind != NaClBitstreamEntry::SubBlock)
return Entry;
// If we found a sub-block, just skip over it and check the next entry.
if (SkipBlock())
- return BitstreamEntry::getError();
+ return NaClBitstreamEntry::getError();
}
}
« no previous file with comments | « no previous file | include/llvm/Bitcode/NaCl/NaClLLVMBitCodes.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698