Make the function static.

This commit is contained in:
Vassil Vassilev 2013-10-22 17:08:14 -05:00 committed by sftnight
parent f1e156daa4
commit aa5ae69f10
4 changed files with 52 additions and 49 deletions

View File

@ -279,14 +279,6 @@ namespace cling {
///
void createUniqueName(std::string& out);
///\brief Get the mangled name of a NamedDecl.
///
///\param [in] D - try to mangle this decl's name.
///\param [out] mangledName - put the mangled name in here.
///
void maybeMangleDeclName(const clang::NamedDecl* D,
std::string& mangledName) const;
///\brief Checks whether the name was generated by Interpreter's unique name
/// generator.
///

View File

@ -41,6 +41,15 @@ namespace utils {
///
static bool IsWrapper(const clang::NamedDecl* ND);
///\brief Get the mangled name of a NamedDecl.
///
///\param [in] D - try to mangle this decl's name.
///\param [out] mangledName - put the mangled name in here.
///
static void maybeMangleDeclName(const clang::NamedDecl* D,
std::string& mangledName);
///\brief Retrieves the last expression of a function body. If it was a
/// DeclStmt with a variable declaration, creates DeclRefExpr and adds it to
/// the function body.

View File

@ -21,7 +21,6 @@
#include "cling/Utils/AST.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/Mangle.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Basic/SourceManager.h"
#include "clang/CodeGen/ModuleBuilder.h"
@ -253,7 +252,7 @@ namespace cling {
NSD = utils::Lookup::Namespace(&getSema(), "internal");
NamedDecl* ND = utils::Lookup::Named(&getSema(), "local_cxa_atexit", NSD);
std::string mangledName;
maybeMangleDeclName(ND, mangledName);
utils::Analyze::maybeMangleDeclName(ND, mangledName);
m_ExecutionContext->addSymbol(mangledName.c_str(),
(void*)(intptr_t)&runtime::internal::local_cxa_atexit);
@ -662,7 +661,7 @@ namespace cling {
return kExeUnkownFunction;
std::string mangledNameIfNeeded;
maybeMangleDeclName(FD, mangledNameIfNeeded);
utils::Analyze::maybeMangleDeclName(FD, mangledNameIfNeeded);
ExecutionContext::ExecutionResult ExeRes =
m_ExecutionContext->executeFunction(mangledNameIfNeeded.c_str(),
getCI()->getASTContext(),
@ -845,43 +844,6 @@ namespace cling {
m_ExecutionContext->runStaticDestructorsOnce(getModule());
}
void Interpreter::maybeMangleDeclName(const clang::NamedDecl* D,
std::string& mangledName) const {
///Get the mangled name of a NamedDecl.
///
///D - mangle this decl's name
///mangledName - put the mangled name in here
llvm::OwningPtr<MangleContext> mangleCtx;
mangleCtx.reset(D->getASTContext().createMangleContext());
if (mangleCtx->shouldMangleDeclName(D)) {
llvm::raw_string_ostream RawStr(mangledName);
switch(D->getKind()) {
case Decl::CXXConstructor:
//Ctor_Complete, // Complete object ctor
//Ctor_Base, // Base object ctor
//Ctor_CompleteAllocating // Complete object allocating ctor (unused)
mangleCtx->mangleCXXCtor(cast<CXXConstructorDecl>(D),
Ctor_Complete, RawStr);
break;
case Decl::CXXDestructor:
//Dtor_Deleting, // Deleting dtor
//Dtor_Complete, // Complete object dtor
//Dtor_Base // Base object dtor
mangleCtx->mangleCXXDtor(cast<CXXDestructorDecl>(D),
Dtor_Complete, RawStr);
break;
default :
mangleCtx->mangleName(D, RawStr);
break;
}
RawStr.flush();
} else {
mangledName = D->getNameAsString();
}
}
void Interpreter::ignoreFakeDiagnostics() const {
DiagnosticsEngine& Diag = getCI()->getDiagnostics();
// Disable warnings which doesn't make sense when using the prompt
@ -911,7 +873,7 @@ namespace cling {
bool* fromJIT /*=0*/) const {
// Return a symbol's address, and whether it was jitted.
std::string mangledName;
maybeMangleDeclName(D, mangledName);
utils::Analyze::maybeMangleDeclName(D, mangledName);
return getAddressOfGlobal(mangledName.c_str(), fromJIT);
}

View File

@ -13,8 +13,11 @@
#include "clang/AST/DeclTemplate.h"
#include "llvm/ADT/ArrayRef.h"
#include "clang/AST/Mangle.h"
#include "llvm/ADT/StringRef.h"
#include <stdio.h>
using namespace clang;
namespace cling {
@ -40,6 +43,43 @@ namespace utils {
.startswith(Synthesize::UniquePrefix);
}
void Analyze::maybeMangleDeclName(const clang::NamedDecl* D,
std::string& mangledName) {
///Get the mangled name of a NamedDecl.
///
///D - mangle this decl's name
///mangledName - put the mangled name in here
llvm::OwningPtr<MangleContext> mangleCtx;
mangleCtx.reset(D->getASTContext().createMangleContext());
if (mangleCtx->shouldMangleDeclName(D)) {
llvm::raw_string_ostream RawStr(mangledName);
switch(D->getKind()) {
case Decl::CXXConstructor:
//Ctor_Complete, // Complete object ctor
//Ctor_Base, // Base object ctor
//Ctor_CompleteAllocating // Complete object allocating ctor (unused)
mangleCtx->mangleCXXCtor(cast<CXXConstructorDecl>(D),
Ctor_Complete, RawStr);
break;
case Decl::CXXDestructor:
//Dtor_Deleting, // Deleting dtor
//Dtor_Complete, // Complete object dtor
//Dtor_Base // Base object dtor
mangleCtx->mangleCXXDtor(cast<CXXDestructorDecl>(D),
Dtor_Complete, RawStr);
break;
default :
mangleCtx->mangleName(D, RawStr);
break;
}
RawStr.flush();
} else {
mangledName = D->getNameAsString();
}
}
Expr* Analyze::GetOrCreateLastExpr(FunctionDecl* FD,
int* FoundAt /*=0*/,
bool omitDeclStmts /*=true*/,