forked from OSchip/llvm-project
Add a new version of Module::getFunction that takes a const char* instead
of a std::string. This avoids copying the string to the heap in common cases. Patch by Pratik Solanki! llvm-svn: 52834
This commit is contained in:
parent
d9f8413402
commit
e43649fa62
|
@ -209,6 +209,7 @@ public:
|
|||
/// getFunction - Look up the specified function in the module symbol table.
|
||||
/// If it does not exist, return null.
|
||||
Function *getFunction(const std::string &Name) const;
|
||||
Function *getFunction(const char *Name) const;
|
||||
|
||||
/// @}
|
||||
/// @name Global Variable Accessors
|
||||
|
|
|
@ -67,6 +67,7 @@ public:
|
|||
/// @returns the value associated with the \p name
|
||||
/// @brief Lookup a named Value.
|
||||
Value *lookup(const std::string &name) const;
|
||||
Value *lookup(const char *NameBegin, const char *NameEnd) const;
|
||||
|
||||
/// @returns true iff the symbol table is empty
|
||||
/// @brief Determine if the symbol table is empty
|
||||
|
|
|
@ -201,6 +201,11 @@ Function *Module::getFunction(const std::string &Name) const {
|
|||
return dyn_cast_or_null<Function>(SymTab.lookup(Name));
|
||||
}
|
||||
|
||||
Function *Module::getFunction(const char *Name) const {
|
||||
const ValueSymbolTable &SymTab = getValueSymbolTable();
|
||||
return dyn_cast_or_null<Function>(SymTab.lookup(Name, Name+strlen(Name)));
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Methods for easy access to the global variables in the module.
|
||||
//
|
||||
|
|
|
@ -54,6 +54,14 @@ Value *ValueSymbolTable::lookup(const std::string &Name) const {
|
|||
return 0;
|
||||
}
|
||||
|
||||
Value *ValueSymbolTable::lookup(const char *NameBegin,
|
||||
const char *NameEnd) const {
|
||||
const_iterator VI = vmap.find(NameBegin, NameEnd);
|
||||
if (VI != vmap.end()) // We found the symbol
|
||||
return VI->getValue();
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Insert a value into the symbol table with the specified name...
|
||||
//
|
||||
void ValueSymbolTable::reinsertValue(Value* V) {
|
||||
|
|
Loading…
Reference in New Issue