forked from OSchip/llvm-project
Use the same constants as zlib to represent compression level.
This change allows users pass compression level that was not listed in the enum. Also, I think using different values than zlib's compression levels was just confusing. Differential Revision: https://reviews.llvm.org/D50196 llvm-svn: 338939
This commit is contained in:
parent
47e2b6b29e
commit
2c97adc1a7
|
@ -23,17 +23,15 @@ class StringRef;
|
|||
|
||||
namespace zlib {
|
||||
|
||||
enum CompressionLevel {
|
||||
NoCompression,
|
||||
DefaultCompression,
|
||||
BestSpeedCompression,
|
||||
BestSizeCompression
|
||||
};
|
||||
static constexpr int NoCompression = 0;
|
||||
static constexpr int BestSpeedCompression = 1;
|
||||
static constexpr int DefaultCompression = 6;
|
||||
static constexpr int BestSizeCompression = 9;
|
||||
|
||||
bool isAvailable();
|
||||
|
||||
Error compress(StringRef InputBuffer, SmallVectorImpl<char> &CompressedBuffer,
|
||||
CompressionLevel Level = DefaultCompression);
|
||||
int Level = DefaultCompression);
|
||||
|
||||
Error uncompress(StringRef InputBuffer, char *UncompressedBuffer,
|
||||
size_t &UncompressedSize);
|
||||
|
@ -49,4 +47,3 @@ uint32_t crc32(StringRef Buffer);
|
|||
} // End of namespace llvm
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -29,16 +29,6 @@ static Error createError(StringRef Err) {
|
|||
return make_error<StringError>(Err, inconvertibleErrorCode());
|
||||
}
|
||||
|
||||
static int encodeZlibCompressionLevel(zlib::CompressionLevel Level) {
|
||||
switch (Level) {
|
||||
case zlib::NoCompression: return 0;
|
||||
case zlib::BestSpeedCompression: return 1;
|
||||
case zlib::DefaultCompression: return Z_DEFAULT_COMPRESSION;
|
||||
case zlib::BestSizeCompression: return 9;
|
||||
}
|
||||
llvm_unreachable("Invalid zlib::CompressionLevel!");
|
||||
}
|
||||
|
||||
static StringRef convertZlibCodeToString(int Code) {
|
||||
switch (Code) {
|
||||
case Z_MEM_ERROR:
|
||||
|
@ -58,14 +48,12 @@ static StringRef convertZlibCodeToString(int Code) {
|
|||
bool zlib::isAvailable() { return true; }
|
||||
|
||||
Error zlib::compress(StringRef InputBuffer,
|
||||
SmallVectorImpl<char> &CompressedBuffer,
|
||||
CompressionLevel Level) {
|
||||
SmallVectorImpl<char> &CompressedBuffer, int Level) {
|
||||
unsigned long CompressedSize = ::compressBound(InputBuffer.size());
|
||||
CompressedBuffer.reserve(CompressedSize);
|
||||
int CLevel = encodeZlibCompressionLevel(Level);
|
||||
int Res = ::compress2((Bytef *)CompressedBuffer.data(), &CompressedSize,
|
||||
(const Bytef *)InputBuffer.data(), InputBuffer.size(),
|
||||
CLevel);
|
||||
int Res =
|
||||
::compress2((Bytef *)CompressedBuffer.data(), &CompressedSize,
|
||||
(const Bytef *)InputBuffer.data(), InputBuffer.size(), Level);
|
||||
// Tell MemorySanitizer that zlib output buffer is fully initialized.
|
||||
// This avoids a false report when running LLVM with uninstrumented ZLib.
|
||||
__msan_unpoison(CompressedBuffer.data(), CompressedSize);
|
||||
|
@ -118,4 +106,3 @@ uint32_t zlib::crc32(StringRef Buffer) {
|
|||
llvm_unreachable("zlib::crc32 is unavailable");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ namespace {
|
|||
|
||||
#if LLVM_ENABLE_ZLIB == 1 && HAVE_LIBZ
|
||||
|
||||
void TestZlibCompression(StringRef Input, zlib::CompressionLevel Level) {
|
||||
void TestZlibCompression(StringRef Input, int Level) {
|
||||
SmallString<32> Compressed;
|
||||
SmallString<32> Uncompressed;
|
||||
|
||||
|
|
Loading…
Reference in New Issue