diff options
| author | Nat Goodspeed <nat@lindenlab.com> | 2015-06-26 15:28:57 -0400 | 
|---|---|---|
| committer | Nat Goodspeed <nat@lindenlab.com> | 2015-06-26 15:28:57 -0400 | 
| commit | 8fee1565eb310081a7f3e26237ddd776c5a9aaaa (patch) | |
| tree | 82080f6f5f65ff0b0ca80d3a0e595ee97203f6cd /indra | |
| parent | 3f52cefcc4b4cc00caef56a40e0da1ea981a3073 (diff) | |
MAINT-5232: Use LLError::Log::demangle() to log LLSingleton classes.
Diffstat (limited to 'indra')
| -rwxr-xr-x | indra/llcommon/llsingleton.cpp | 28 | ||||
| -rwxr-xr-x | indra/llcommon/llsingleton.h | 10 | 
2 files changed, 24 insertions, 14 deletions
| diff --git a/indra/llcommon/llsingleton.cpp b/indra/llcommon/llsingleton.cpp index 2813814ae1..b78110296f 100755 --- a/indra/llcommon/llsingleton.cpp +++ b/indra/llcommon/llsingleton.cpp @@ -111,13 +111,13 @@ void LLSingletonBase::pop_initializing()      if (list.empty())      {          logerrs("Underflow in stack of currently-initializing LLSingletons at ", -                typeid(*this).name(), "::getInstance()"); +                demangle(typeid(*this).name()).c_str(), "::getInstance()");      }      if (list.back() != this)      {          logerrs("Push/pop mismatch in stack of currently-initializing LLSingletons: ", -                typeid(*this).name(), "::getInstance() trying to pop ", -                typeid(*list.back()).name()); +                demangle(typeid(*this).name()).c_str(), "::getInstance() trying to pop ", +                demangle(typeid(*list.back()).name()).c_str());      }      // Here we're sure that list.back() == this. Whew, pop it.      list.pop_back(); @@ -148,7 +148,7 @@ void LLSingletonBase::capture_dependency(EInitState initState)              {                  // 'found' is an iterator; *found is an LLSingletonBase*; **found                  // is the actual LLSingletonBase instance. -                out << typeid(**found).name() << " -> "; +                out << demangle(typeid(**found).name()) << " -> ";              }              // We promise to capture dependencies from both the constructor              // and the initSingleton() method, so an LLSingleton's instance @@ -161,7 +161,8 @@ void LLSingletonBase::capture_dependency(EInitState initState)              // Decide which log helper to call based on initState. They have              // identical signatures.              ((initState == CONSTRUCTING)? logerrs : logwarns) -                ("LLSingleton circularity: ", out.str().c_str(), typeid(*this).name(), ""); +                ("LLSingleton circularity: ", out.str().c_str(), +                 demangle(typeid(*this).name()).c_str(), "");          }          else          { @@ -232,12 +233,12 @@ void LLSingletonBase::cleanupAll()              }              catch (const std::exception& e)              { -                logwarns("Exception in ", typeid(*sp).name(), +                logwarns("Exception in ", demangle(typeid(*sp).name()).c_str(),                           "::cleanupSingleton(): ", e.what());              }              catch (...)              { -                logwarns("Unknown exception in ", typeid(*sp).name(), +                logwarns("Unknown exception in ", demangle(typeid(*sp).name()).c_str(),                           "::cleanupSingleton()");              }          } @@ -252,14 +253,14 @@ void LLSingletonBase::deleteAll()      {          // Capture the class name first: in case of exception, don't count on          // being able to extract it later. -        const char* name = typeid(*sp).name(); +        const std::string name = demangle(typeid(*sp).name());          try          {              // Call static method through instance function pointer.              if (! sp->mDeleteSingleton)              {                  // This Should Not Happen... but carry on. -                logwarns(name, "::mDeleteSingleton not initialized!"); +                logwarns(name.c_str(), "::mDeleteSingleton not initialized!");              }              else              { @@ -270,11 +271,11 @@ void LLSingletonBase::deleteAll()          }          catch (const std::exception& e)          { -            logwarns("Exception in ", name, "::deleteSingleton(): ", e.what()); +            logwarns("Exception in ", name.c_str(), "::deleteSingleton(): ", e.what());          }          catch (...)          { -            logwarns("Unknown exception in ", name, "::deleteSingleton()"); +            logwarns("Unknown exception in ", name.c_str(), "::deleteSingleton()");          }      }  } @@ -348,3 +349,8 @@ void LLSingletonBase::logwarns(const char* p1, const char* p2, const char* p3, c          std::cerr << p1 << p2 << p3 << p4 << std::endl;      }  } + +std::string LLSingletonBase::demangle(const char* mangled) +{ +    return LLError::Log::demangle(mangled); +} diff --git a/indra/llcommon/llsingleton.h b/indra/llcommon/llsingleton.h index a82101c367..253e0b9a6b 100755 --- a/indra/llcommon/llsingleton.h +++ b/indra/llcommon/llsingleton.h @@ -104,6 +104,7 @@ protected:      // delegate LL_WARNS() logging to llsingleton.cpp      static void logwarns(const char* p1, const char* p2="",                           const char* p3="", const char* p4=""); +    static std::string demangle(const char* mangled);      // obtain canonical ref_ptr_t      static ref_ptr_t get_master_refcount(); @@ -337,11 +338,13 @@ public:          {          case UNINITIALIZED:              // should never be uninitialized at this point -            logerrs("Uninitialized singleton ", typeid(DERIVED_TYPE).name()); +            logerrs("Uninitialized singleton ", +                    demangle(typeid(DERIVED_TYPE).name()).c_str());              return NULL;          case CONSTRUCTING: -            logerrs("Tried to access singleton ", typeid(DERIVED_TYPE).name(), +            logerrs("Tried to access singleton ", +                    demangle(typeid(DERIVED_TYPE).name()).c_str(),                      " from singleton constructor!");              return NULL; @@ -361,7 +364,8 @@ public:              break;          case DELETED: -            logwarns("Trying to access deleted singleton ", typeid(DERIVED_TYPE).name(), +            logwarns("Trying to access deleted singleton ", +                     demangle(typeid(DERIVED_TYPE).name()).c_str(),                       " -- creating new instance");              SingletonLifetimeManager::construct();              // same as first time construction | 
