Remove an unneeded goto in the decompressor; it turns out that the
state of ip_ after decompression (or attempted decompresion) is completely irrelevant, so we don't need the trailer. Performance is, as expected, mostly flat -- there's a curious ~3-5% loss in the "lsp" test, but that test case is so short it is hard to say anything definitive about why (most likely, it's some sort of unrelated effect). R=jeff git-svn-id: https://snappy.googlecode.com/svn/trunk@39 03e5f5b5-db94-4691-08a0-1a8bf15f6143
This commit is contained in:
11
snappy.cc
11
snappy.cc
@@ -673,19 +673,19 @@ class SnappyDecompressor {
|
||||
uint32 avail = ip_limit_ - ip;
|
||||
while (avail < literal_length) {
|
||||
bool allow_fast_path = (avail >= 16);
|
||||
if (!writer->Append(ip, avail, allow_fast_path)) goto end;
|
||||
if (!writer->Append(ip, avail, allow_fast_path)) return;
|
||||
literal_length -= avail;
|
||||
reader_->Skip(peeked_);
|
||||
size_t n;
|
||||
ip = reader_->Peek(&n);
|
||||
avail = n;
|
||||
peeked_ = avail;
|
||||
if (avail == 0) goto end; // Premature end of input
|
||||
if (avail == 0) return; // Premature end of input
|
||||
ip_limit_ = ip + avail;
|
||||
}
|
||||
bool allow_fast_path = (avail >= 16);
|
||||
if (!writer->Append(ip, literal_length, allow_fast_path)) {
|
||||
goto end;
|
||||
return;
|
||||
}
|
||||
ip += literal_length;
|
||||
} else {
|
||||
@@ -694,13 +694,10 @@ class SnappyDecompressor {
|
||||
// bit 8).
|
||||
const uint32 copy_offset = entry & 0x700;
|
||||
if (!writer->AppendFromSelf(copy_offset + trailer, length)) {
|
||||
goto end;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
end:
|
||||
ip_ = ip;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user