diff options
author | David Greene <greened@obbligato.org> | 2009-07-23 23:21:10 +0000 |
---|---|---|
committer | David Greene <greened@obbligato.org> | 2009-07-23 23:21:10 +0000 |
commit | ed0e2adc7076365596ee3d26d5ba5240ce13f23d (patch) | |
tree | 9b3b55942b5524a2b3abcb296e98103ab3a6fa76 | |
parent | eee839dd3c5cb87e51a522b4800674d7680fef70 (diff) | |
download | external_llvm-ed0e2adc7076365596ee3d26d5ba5240ce13f23d.zip external_llvm-ed0e2adc7076365596ee3d26d5ba5240ce13f23d.tar.gz external_llvm-ed0e2adc7076365596ee3d26d5ba5240ce13f23d.tar.bz2 |
Write space padding as one string to speed up comment printing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76910 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Support/FormattedStream.h | 9 | ||||
-rw-r--r-- | lib/Support/FormattedStream.cpp | 16 |
2 files changed, 21 insertions, 4 deletions
diff --git a/include/llvm/Support/FormattedStream.h b/include/llvm/Support/FormattedStream.h index dc30cdb..4b13ff2 100644 --- a/include/llvm/Support/FormattedStream.h +++ b/include/llvm/Support/FormattedStream.h @@ -27,16 +27,23 @@ namespace llvm /// DELETE_STREAM - Tell the destructor to delete the held stream. /// const static bool DELETE_STREAM = true; + /// PRESERVE_STREAM - Tell the destructor to not delete the held /// stream. /// const static bool PRESERVE_STREAM = false; - + + /// MAX_COLUMN_PAD - This is the maximum column padding we ever + /// expect to see. + /// + const static unsigned MAX_COLUMN_PAD = 100; + private: /// TheStream - The real stream we output to. We set it to be /// unbuffered, since we're already doing our own buffering. /// raw_ostream *TheStream; + /// DeleteStream - Do we need to delete TheStream in the /// destructor? /// diff --git a/lib/Support/FormattedStream.cpp b/lib/Support/FormattedStream.cpp index 3523e2d..1796f9f 100644 --- a/lib/Support/FormattedStream.cpp +++ b/lib/Support/FormattedStream.cpp @@ -12,6 +12,8 @@ //===----------------------------------------------------------------------===// #include "llvm/Support/FormattedStream.h" +#include <algorithm> + using namespace llvm; /// ComputeColumn - Examine the current output and figure out which @@ -44,9 +46,17 @@ void formatted_raw_ostream::PadToColumn(unsigned NewCol, unsigned MinPad) { if (NewCol < Column || num < MinPad) num = MinPad; - // TODO: Write a whole string at a time. - while (num-- > 0) - write(' '); + // Keep a buffer of spaces handy to speed up processing. + static char Spaces[MAX_COLUMN_PAD]; + static bool Initialized = false; + if (!Initialized) { + std::fill_n(Spaces, MAX_COLUMN_PAD, ' '), + Initialized = true; + } + + assert(num < MAX_COLUMN_PAD && "Unexpectedly large column padding"); + + write(Spaces, num); } /// fouts() - This returns a reference to a formatted_raw_ostream for |