diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-02-06 19:55:15 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-02-06 19:55:15 +0000 |
commit | 6e94ef5696cfb005d3fc7bbac8dcf7690b64f0a5 (patch) | |
tree | 97de005ec3d70e33d4173910446a126dd9a2211a /lib/AST/Expr.cpp | |
parent | 2770105f9ecdc1bf8ba0bc9ed1963eeabc10377d (diff) |
Move StringLiteral to allocate its internal string data using the allocator in
ASTContext. This required changing all clients to pass in the ASTContext& to the
constructor of StringLiteral. I also changed all allocations of StringLiteral to
use new(ASTContext&).
Along the way, I updated a bunch of new()'s in StmtSerialization.cpp to use the
allocator from ASTContext& (not complete).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63958 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/Expr.cpp')
-rw-r--r-- | lib/AST/Expr.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp index ce13c34012..d627ab03b2 100644 --- a/lib/AST/Expr.cpp +++ b/lib/AST/Expr.cpp @@ -38,12 +38,13 @@ double FloatingLiteral::getValueAsApproximateDouble() const { } -StringLiteral::StringLiteral(const char *strData, unsigned byteLength, - bool Wide, QualType t, SourceLocation firstLoc, +StringLiteral::StringLiteral(ASTContext& C, const char *strData, + unsigned byteLength, bool Wide, QualType t, + SourceLocation firstLoc, SourceLocation lastLoc) : Expr(StringLiteralClass, t) { // OPTIMIZE: could allocate this appended to the StringLiteral. - char *AStrData = new char[byteLength]; + char *AStrData = new (C, 1) char[byteLength]; memcpy(AStrData, strData, byteLength); StrData = AStrData; ByteLength = byteLength; @@ -52,8 +53,9 @@ StringLiteral::StringLiteral(const char *strData, unsigned byteLength, lastTokLoc = lastLoc; } -StringLiteral::~StringLiteral() { - delete[] StrData; +void StringLiteral::Destroy(ASTContext &C) { + C.Deallocate(const_cast<char*>(StrData)); + this->~StringLiteral(); } bool UnaryOperator::isPostfix(Opcode Op) { |