| 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();
|
| }
|
| }
|
|
|
|
|