summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/raw_ostream.cpp
diff options
context:
space:
mode:
authorAlp Toker <alp@nuanti.com>2014-07-11 18:23:08 +0000
committerAlp Toker <alp@nuanti.com>2014-07-11 18:23:08 +0000
commit48bbd061bc46891afed70ceafced3c2343e4b6ae (patch)
tree139dd72b4626d4db74ce63340c30dd4fb2e0cf2e /llvm/lib/Support/raw_ostream.cpp
parent547864d26aa3ab7076395786f9deaf404888cb07 (diff)
downloadbcm5719-llvm-48bbd061bc46891afed70ceafced3c2343e4b6ae.tar.gz
bcm5719-llvm-48bbd061bc46891afed70ceafced3c2343e4b6ae.zip
Simplify the raw_svector_ostream tweak from r212816
The memcpy() and overlap helps didn't help much with timings, so clean up the change. The difference at this point is that we now leave growth of the storage buffer up to SmallVector's implementation: - OS.reserve(OS.capacity() * 2); + OS.reserve(OS.size() + 64); llvm-svn: 212837
Diffstat (limited to 'llvm/lib/Support/raw_ostream.cpp')
-rw-r--r--llvm/lib/Support/raw_ostream.cpp17
1 files changed, 4 insertions, 13 deletions
diff --git a/llvm/lib/Support/raw_ostream.cpp b/llvm/lib/Support/raw_ostream.cpp
index b8a1537ae8a..d156826144a 100644
--- a/llvm/lib/Support/raw_ostream.cpp
+++ b/llvm/lib/Support/raw_ostream.cpp
@@ -729,26 +729,17 @@ void raw_svector_ostream::resync() {
}
void raw_svector_ostream::write_impl(const char *Ptr, size_t Size) {
- size_t NewSize = OS.size() + Size;
- size_t NewReservation = NewSize + 64;
-
- bool NoOverlap = Ptr + Size < OS.begin() || Ptr > OS.begin() + OS.capacity();
-
- if (NoOverlap) {
- assert(!GetNumBytesInBuffer());
- OS.reserve(NewReservation);
- memcpy(OS.end(), Ptr, Size);
- OS.set_size(NewSize);
- } else if (Ptr == OS.end()) {
+ if (Ptr == OS.end()) {
// Grow the buffer to include the scratch area without copying.
+ size_t NewSize = OS.size() + Size;
assert(NewSize <= OS.capacity() && "Invalid write_impl() call!");
OS.set_size(NewSize);
- OS.reserve(NewReservation);
} else {
+ assert(!GetNumBytesInBuffer());
OS.append(Ptr, Ptr + Size);
- OS.reserve(NewReservation);
}
+ OS.reserve(OS.size() + 64);
SetBuffer(OS.end(), OS.capacity() - OS.size());
}
OpenPOWER on IntegriCloud