Move compressor out of the core Reader.cpp file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34007 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2007-02-07 19:49:01 +00:00
parent f5e28d9dfe
commit 0d3382ac92
3 changed files with 14 additions and 6 deletions

View File

@ -27,7 +27,6 @@
#include "llvm/Bytecode/Format.h"
#include "llvm/Config/alloca.h"
#include "llvm/Support/GetElementPtrTypeIterator.h"
#include "llvm/Support/Compressor.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringExtras.h"
@ -1982,6 +1981,7 @@ void BytecodeReader::ParseModule() {
/// and \p Length parameters.
bool BytecodeReader::ParseBytecode(volatile BufPtr Buf, unsigned Length,
const std::string &ModuleID,
Decompressor_t *Decompressor,
std::string* ErrMsg) {
/// We handle errors by
@ -2021,8 +2021,8 @@ bool BytecodeReader::ParseBytecode(volatile BufPtr Buf, unsigned Length,
// file's magic number which is not part of the compressed block. Hence,
// the Buf+4 and Length-4. The result goes into decompressedBlock, a data
// member for retention until BytecodeReader is destructed.
unsigned decompressedLength = Compressor::decompressToNewBuffer(
(char*)Buf+4,Length-4,decompressedBlock);
unsigned decompressedLength =
Decompressor((char*)Buf+4,Length-4,decompressedBlock, 0);
// We must adjust the buffer pointers used by the bytecode reader to point
// into the new decompressed block. After decompression, the

View File

@ -140,12 +140,16 @@ public:
/// @name Methods
/// @{
public:
typedef size_t Decompressor_t(const char *, size_t, char*&, std::string*);
/// @returns true if an error occurred
/// @brief Main interface to parsing a bytecode buffer.
bool ParseBytecode(
volatile BufPtr Buf, ///< Beginning of the bytecode buffer
unsigned Length, ///< Length of the bytecode buffer
const std::string &ModuleID, ///< An identifier for the module constructed.
Decompressor_t *Decompressor = 0, ///< Optional decompressor.
std::string* ErrMsg = 0 ///< Optional place for error message
);

View File

@ -18,6 +18,7 @@
#include "llvm/Module.h"
#include "llvm/Instructions.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/Compressor.h"
#include "llvm/System/MappedFile.h"
#include "llvm/System/Program.h"
#include <cerrno>
@ -63,7 +64,8 @@ bool BytecodeFileReader::read(std::string* ErrMsg) {
return true;
}
unsigned char* buffer = reinterpret_cast<unsigned char*>(mapFile.base());
return ParseBytecode(buffer, mapFile.size(), fileName, ErrMsg);
return ParseBytecode(buffer, mapFile.size(), fileName,
Compressor::decompressToNewBuffer, ErrMsg);
}
//===----------------------------------------------------------------------===//
@ -122,7 +124,8 @@ BytecodeBufferReader::read(std::string* ErrMsg) {
ParseBegin = Buffer = Buf;
MustDelete = false;
}
if (ParseBytecode(ParseBegin, Length, ModuleID, ErrMsg)) {
if (ParseBytecode(ParseBegin, Length, ModuleID,
Compressor::decompressToNewBuffer, ErrMsg)) {
if (MustDelete) delete [] Buffer;
return true;
}
@ -177,7 +180,8 @@ BytecodeStdinReader::read(std::string* ErrMsg)
}
FileBuf = &FileData[0];
if (ParseBytecode(FileBuf, FileData.size(), "<stdin>", ErrMsg))
if (ParseBytecode(FileBuf, FileData.size(), "<stdin>",
Compressor::decompressToNewBuffer, ErrMsg))
return true;
return false;
}