summaryrefslogtreecommitdiff
path: root/indra/llcommon
diff options
context:
space:
mode:
authorTofu Linden <tofu.linden@lindenlab.com>2010-01-04 15:31:19 -0800
committerTofu Linden <tofu.linden@lindenlab.com>2010-01-04 15:31:19 -0800
commitc9868071b113b251e03d95163118b696e28bbe98 (patch)
tree8428d2e97f7a61b1a10e7e10494199a39969369d /indra/llcommon
parente833e7ad442f5b59f95c6ccfcaaf1d103d247d69 (diff)
parente8659e0e13c65308ad2f036dc7e7ccff0e665976 (diff)
Merge from trunk. Conflicts manually resolved in:
U indra/llui/lluictrlfactory.cpp U indra/newview/llinventorybridge.cpp U indra/newview/llviewertexture.cpp U indra/newview/llviewertexture.h
Diffstat (limited to 'indra/llcommon')
-rw-r--r--indra/llcommon/lleventdispatcher.h3
-rw-r--r--indra/llcommon/llfasttimer.h27
2 files changed, 25 insertions, 5 deletions
diff --git a/indra/llcommon/lleventdispatcher.h b/indra/llcommon/lleventdispatcher.h
index c8c4fe0c3c..1e625bcee8 100644
--- a/indra/llcommon/lleventdispatcher.h
+++ b/indra/llcommon/lleventdispatcher.h
@@ -139,6 +139,9 @@ public:
/// Get information about a specific Callable
LLSD getMetadata(const std::string& name) const;
+ /// Retrieve the LLSD key we use for one-arg <tt>operator()</tt> method
+ std::string getDispatchKey() const { return mKey; }
+
private:
template <class CLASS, typename METHOD>
void addMethod(const std::string& name, const std::string& desc,
diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h
index 45b84ea3ea..f5c90291b8 100644
--- a/indra/llcommon/llfasttimer.h
+++ b/indra/llcommon/llfasttimer.h
@@ -36,6 +36,7 @@
#include "llinstancetracker.h"
#define FAST_TIMER_ON 1
+#define TIME_FAST_TIMERS 0
#if LL_WINDOWS
@@ -56,7 +57,7 @@ inline U32 get_cpu_clock_count_32()
return ret_val;
}
-// return full timer value, still shifted by 8 bits
+// return full timer value, *not* shifted by 8 bits
inline U64 get_cpu_clock_count_64()
{
U64 ret_val;
@@ -69,7 +70,7 @@ inline U64 get_cpu_clock_count_64()
mov dword ptr [ret_val+4], edx
mov dword ptr [ret_val], eax
}
- return ret_val >> 8;
+ return ret_val;
}
#endif // LL_WINDOWS
@@ -242,6 +243,9 @@ public:
LLFastTimer(NamedTimer::FrameState& timer)
: mFrameState(&timer)
{
+#if TIME_FAST_TIMERS
+ U64 timer_start = get_cpu_clock_count_64();
+#endif
#if FAST_TIMER_ON
NamedTimer::FrameState* frame_state = &timer;
U32 cur_time = get_cpu_clock_count_32();
@@ -256,10 +260,17 @@ public:
mLastTimer = sCurTimer;
sCurTimer = this;
#endif
+#if TIME_FAST_TIMERS
+ U64 timer_end = get_cpu_clock_count_64();
+ sTimerCycles += timer_end - timer_start;
+#endif
}
~LLFastTimer()
{
+#if TIME_FAST_TIMERS
+ U64 timer_start = get_cpu_clock_count_64();
+#endif
#if FAST_TIMER_ON
NamedTimer::FrameState* frame_state = mFrameState;
U32 cur_time = get_cpu_clock_count_32();
@@ -276,6 +287,11 @@ public:
U32 total_time = cur_time - mStartTotalTime;
last_timer->mStartSelfTime += total_time;
#endif
+#if TIME_FAST_TIMERS
+ U64 timer_end = get_cpu_clock_count_64();
+ sTimerCycles += timer_end - timer_start;
+ sTimerCalls++;
+#endif
}
@@ -297,11 +313,12 @@ public:
static const NamedTimer* getTimerByName(const std::string& name);
public:
- static bool sPauseHistory;
- static bool sResetHistory;
+ static bool sPauseHistory;
+ static bool sResetHistory;
+ static U64 sTimerCycles;
+ static U32 sTimerCalls;
private:
- typedef std::vector<LLFastTimer*> timer_stack_t;
static LLFastTimer* sCurTimer;
static S32 sCurFrameIndex;
static S32 sLastFrameIndex;