aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Support/StringSaver.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2015-06-13 12:49:52 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2015-06-13 12:49:52 +0000
commit454adf645480245725c74fdbe8840ceff039ef64 (patch)
tree0412a6ae637df95d5eb30d87e35bb26cd220069c /llvm/lib/Support/StringSaver.cpp
parentd9ad0cbd70426f1b85d37d9059e66b2e5f1f0c8b (diff)
downloadllvm-454adf645480245725c74fdbe8840ceff039ef64.zip
llvm-454adf645480245725c74fdbe8840ceff039ef64.tar.gz
llvm-454adf645480245725c74fdbe8840ceff039ef64.tar.bz2
Bring in a BumpPtrStringSaver from lld and simplify the interface.
StringSaver now always saves to a BumpPtrAllocator. The only reason for having the virtual saveImpl is so lld can have a thread safe version. The reason for the distinct BumpPtrStringSaver class is to avoid the virtual destructor. llvm-svn: 239669
Diffstat (limited to 'llvm/lib/Support/StringSaver.cpp')
-rw-r--r--llvm/lib/Support/StringSaver.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/llvm/lib/Support/StringSaver.cpp b/llvm/lib/Support/StringSaver.cpp
new file mode 100644
index 0000000..d6b84e5
--- /dev/null
+++ b/llvm/lib/Support/StringSaver.cpp
@@ -0,0 +1,19 @@
+//===-- StringSaver.cpp ---------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/Support/StringSaver.h"
+
+using namespace llvm;
+
+const char *StringSaver::saveImpl(StringRef S) {
+ char *P = Alloc.Allocate<char>(S.size() + 1);
+ memcpy(P, S.data(), S.size());
+ P[S.size()] = '\0';
+ return P;
+}