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:
snappy.mirrorbot@gmail.com
2011-06-02 18:06:54 +00:00
parent c266bbf321
commit 2e12124bd8

View File

@@ -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;
}
};