Rewrite getName{Start,End,Len} in terms of getName(), instead of vice-versa.
authorDaniel Dunbar <daniel@zuster.org>
Sun, 26 Jul 2009 00:51:56 +0000 (00:51 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Sun, 26 Jul 2009 00:51:56 +0000 (00:51 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77105 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Value.h
lib/VMCore/Value.cpp

index b460e9a9a88231c37e305fb0a3306f28617f359d..bee70b2147a64aee0f6803bba933cdb8d88d8535 100644 (file)
@@ -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
index 67cd11a3d194c70f205028952e70dcf07bab85d8..fa82bac60e3b1b4716f43877587bfc08ba5ba671 100644 (file)
@@ -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();
 }