summaryrefslogtreecommitdiff
path: root/indra/llcommon/llinstancetracker.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llcommon/llinstancetracker.cpp')
-rw-r--r--indra/llcommon/llinstancetracker.cpp24
1 files changed, 16 insertions, 8 deletions
diff --git a/indra/llcommon/llinstancetracker.cpp b/indra/llcommon/llinstancetracker.cpp
index 5dc3ea5d7b..89430f82d7 100644
--- a/indra/llcommon/llinstancetracker.cpp
+++ b/indra/llcommon/llinstancetracker.cpp
@@ -32,18 +32,26 @@
// external library headers
// other Linden headers
-//static
-void * & LLInstanceTrackerBase::getInstances(std::type_info const & info)
-{
- typedef std::map<std::string, void *> InstancesMap;
- static InstancesMap instances;
+static bool sInstanceTrackerData_initialized = false;
+static void* sInstanceTrackerData[ kInstanceTrackTypeCount ];
+
+void * & LLInstanceTrackerBase::getInstances(InstanceTrackType t)
+{
// std::map::insert() is just what we want here. You attempt to insert a
// (key, value) pair. If the specified key doesn't yet exist, it inserts
// the pair and returns a std::pair of (iterator, true). If the specified
// key DOES exist, insert() simply returns (iterator, false). One lookup
// handles both cases.
- return instances.insert(InstancesMap::value_type(info.name(),
- InstancesMap::mapped_type()))
- .first->second;
+ if (!sInstanceTrackerData_initialized)
+ {
+ for (S32 i = 0; i < (S32) kInstanceTrackTypeCount; i++)
+ {
+ sInstanceTrackerData[i] = NULL;
+ }
+ sInstanceTrackerData_initialized = true;
+ }
+
+ return sInstanceTrackerData[t];
}
+