summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Linden <none@none>2013-09-09 11:43:12 -0700
committerRichard Linden <none@none>2013-09-09 11:43:12 -0700
commit4f44366731c6fb3bf62c29a5413dc8db86ab4f2e (patch)
tree4675aca166c6f0d074da7f81958c7b9fefa754ff
parent62d40c8d85c57158db226b25bac27f3e77672f8e (diff)
BUILDFIX: don't use typeinfo() in static object constructor of baseclass
-rw-r--r--indra/llcommon/lltrace.h23
1 files changed, 20 insertions, 3 deletions
diff --git a/indra/llcommon/lltrace.h b/indra/llcommon/lltrace.h
index d42c8e26fb..afa9933165 100644
--- a/indra/llcommon/lltrace.h
+++ b/indra/llcommon/lltrace.h
@@ -62,8 +62,8 @@ public:
const std::string& getDescription() const { return mDescription; }
protected:
- const std::string mName;
- const std::string mDescription;
+ std::string mName;
+ std::string mDescription;
};
template<typename ACCUMULATOR>
@@ -225,6 +225,12 @@ public:
: trace_t(name)
{}
+ void setName(const char* name)
+ {
+ mName = name;
+ setKey(name);
+ }
+
/*virtual*/ const char* getUnitLabel() const { return "B"; }
TraceType<MemStatAccumulator::AllocationCountFacet>& allocationCount()
@@ -331,6 +337,17 @@ class MemTrackable
public:
typedef void mem_trackable_tag_t;
+ MemTrackable()
+ {
+ static bool name_initialized = false;
+ if (!name_initialized)
+ {
+ name_initialized = true;
+ sMemStat.setName(typeid(DERIVED).name());
+ }
+ }
+
+
virtual ~MemTrackable()
{
memDisclaim(mMemFootprint);
@@ -524,7 +541,7 @@ private:
// pretty sure typeid of containing class in static object constructor doesn't work in gcc
template<typename DERIVED, size_t ALIGNMENT>
-MemStatHandle MemTrackable<DERIVED, ALIGNMENT>::sMemStat(typeid(DERIVED).name());
+MemStatHandle MemTrackable<DERIVED, ALIGNMENT>::sMemStat("");
}
#endif // LL_LLTRACE_H