From 05e5310ad86871a7a0492325428dfc6f73159f52 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 16 Apr 2008 04:11:35 +0000 Subject: [PATCH] switch AddLineNumber to use a SmallString instead of sstream. This speeds up -emit-html on ted's testcase by 29% (.138 -> 0.107s) in a release build. llvm-svn: 49767 --- clang/lib/Rewrite/HTMLRewrite.cpp | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/clang/lib/Rewrite/HTMLRewrite.cpp b/clang/lib/Rewrite/HTMLRewrite.cpp index bc7864eebd38..fc1627af0294 100644 --- a/clang/lib/Rewrite/HTMLRewrite.cpp +++ b/clang/lib/Rewrite/HTMLRewrite.cpp @@ -15,6 +15,7 @@ #include "clang/Rewrite/Rewriter.h" #include "clang/Rewrite/HTMLRewrite.h" #include "clang/Basic/SourceManager.h" +#include "llvm/ADT/SmallString.h" #include "llvm/Support/MemoryBuffer.h" #include @@ -113,17 +114,18 @@ std::string html::EscapeText(const std::string& s, bool EscapeSpaces, static void AddLineNumber(Rewriter& R, unsigned LineNo, SourceLocation B, SourceLocation E) { - - std::ostringstream os; - os << "" - << LineNo << ""; - + llvm::SmallString<100> Str; + Str += ""; + Str.append_uint(LineNo); + Str += ""; + if (B == E) { // Handle empty lines. - os << " "; - R.InsertStrBefore(B, os.str()); - } - else { - R.InsertStrBefore(B, os.str()); + Str += " "; + R.InsertTextBefore(B, &Str[0], Str.size()); + } else { + R.InsertTextBefore(B, &Str[0], Str.size()); R.InsertCStrBefore(E, ""); } }