From 518cd20f61074262075c1149e60ef1ab2ae389de Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Sun, 26 Jul 2009 00:51:56 +0000 Subject: [PATCH] Rewrite getName{Start,End,Len} in terms of getName(), instead of vice-versa. llvm-svn: 77105 --- include/llvm/Value.h | 18 +++++++++++------- lib/VMCore/Value.cpp | 16 +++------------- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/include/llvm/Value.h b/include/llvm/Value.h index b460e9a9a88..bee70b2147a 100644 --- a/include/llvm/Value.h +++ b/include/llvm/Value.h @@ -114,18 +114,22 @@ public: /// getNameStart - Return a pointer to a null terminated string for this name. /// Note that names can have null characters within the string as well as at /// their end. This always returns a non-null pointer. - const char *getNameStart() const; + const char *getNameStart() const { return getName().begin(); } /// getNameEnd - Return a pointer to the end of the name. - const char *getNameEnd() const { return getNameStart() + getNameLen(); } + const char *getNameEnd() const { return getName().end(); } /// getNameLen - Return the length of the string, correctly handling nul /// characters embedded into them. - unsigned getNameLen() const; + unsigned getNameLen() const { return getName().size(); } - /// getName()/getNameStr() - Return the name of the specified value, - /// *constructing a string* to hold it. Because these are guaranteed to - /// construct a string, they are very expensive and should be avoided. - StringRef getName() const { return StringRef(getNameStart(), getNameLen()); } + /// getName() - Return a constant reference to the value's name. This is cheap + /// and guaranteed to return the same reference as long as the value is not + /// modified. + StringRef getName() const; + + /// getNameStr() - Return the name of the specified value, *constructing a + /// string* to hold it. This is guaranteed to construct a string and is very + /// expensive, clients should use getName() unless necessary. std::string getNameStr() const; /// setName() - Change the name of the value, choosing a new unique name if diff --git a/lib/VMCore/Value.cpp b/lib/VMCore/Value.cpp index 67cd11a3d19..fa82bac60e3 100644 --- a/lib/VMCore/Value.cpp +++ b/lib/VMCore/Value.cpp @@ -151,21 +151,11 @@ static bool getSymTab(Value *V, ValueSymbolTable *&ST) { return false; } -/// getNameStart - Return a pointer to a null terminated string for this name. -/// Note that names can have null characters within the string as well as at -/// their end. This always returns a non-null pointer. -const char *Value::getNameStart() const { - if (Name == 0) return ""; - return Name->getKeyData(); +StringRef Value::getName() const { + if (!Name) return StringRef(); + return Name->getKey(); } -/// getNameLen - Return the length of the string, correctly handling nul -/// characters embedded into them. -unsigned Value::getNameLen() const { - return Name ? Name->getKeyLength() : 0; -} - - std::string Value::getNameStr() const { return getName().str(); }