diff options
Diffstat (limited to 'indra/llcommon/lltrace.h')
-rw-r--r-- | indra/llcommon/lltrace.h | 45 |
1 files changed, 30 insertions, 15 deletions
diff --git a/indra/llcommon/lltrace.h b/indra/llcommon/lltrace.h index d42c8e26fb..6436570492 100644 --- a/indra/llcommon/lltrace.h +++ b/indra/llcommon/lltrace.h @@ -78,9 +78,9 @@ public: mAccumulatorIndex(AccumulatorBuffer<ACCUMULATOR>::getDefaultBuffer()->reserveSlot()) {} - LL_FORCE_INLINE ACCUMULATOR& getPrimaryAccumulator() const + LL_FORCE_INLINE ACCUMULATOR& getCurrentAccumulator() const { - ACCUMULATOR* accumulator_storage = AccumulatorBuffer<ACCUMULATOR>::getPrimaryStorage(); + ACCUMULATOR* accumulator_storage = AccumulatorBuffer<ACCUMULATOR>::getCurrentStorage(); return accumulator_storage[mAccumulatorIndex]; } @@ -135,7 +135,7 @@ template<typename T, typename VALUE_T> void record(EventStatHandle<T>& measurement, VALUE_T value) { T converted_value(value); - measurement.getPrimaryAccumulator().record(storage_value(converted_value)); + measurement.getCurrentAccumulator().record(storage_value(converted_value)); } template <typename T = F64> @@ -158,7 +158,22 @@ template<typename T, typename VALUE_T> void sample(SampleStatHandle<T>& measurement, VALUE_T value) { T converted_value(value); - measurement.getPrimaryAccumulator().sample(storage_value(converted_value)); + measurement.getCurrentAccumulator().sample(storage_value(converted_value)); +} + +template<typename T, typename VALUE_T> +void add(SampleStatHandle<T>& measurement, VALUE_T value) +{ + T converted_value(value); + SampleAccumulator& acc = measurement.getCurrentAccumulator(); + if (acc.hasValue()) + { + acc.sample(acc.getLastValue() + converted_value); + } + else + { + acc.sample(converted_value); + } } template <typename T = F64> @@ -181,7 +196,7 @@ template<typename T, typename VALUE_T> void add(CountStatHandle<T>& count, VALUE_T value) { T converted_value(value); - count.getPrimaryAccumulator().add(storage_value(converted_value)); + count.getCurrentAccumulator().add(storage_value(converted_value)); } template<> @@ -338,7 +353,7 @@ public: void* operator new(size_t size) { - MemStatAccumulator& accumulator = sMemStat.getPrimaryAccumulator(); + MemStatAccumulator& accumulator = DERIVED::sMemStat.getCurrentAccumulator(); accumulator.mSize.sample(accumulator.mSize.hasValue() ? accumulator.mSize.getLastValue() + (F64)size : (F64)size); accumulator.mAllocatedCount++; @@ -362,7 +377,7 @@ public: void operator delete(void* ptr, size_t size) { - MemStatAccumulator& accumulator = sMemStat.getPrimaryAccumulator(); + MemStatAccumulator& accumulator = DERIVED::sMemStat.getCurrentAccumulator(); accumulator.mSize.sample(accumulator.mSize.hasValue() ? accumulator.mSize.getLastValue() - (F64)size : -(F64)size); accumulator.mAllocatedCount--; accumulator.mDeallocatedCount++; @@ -387,7 +402,7 @@ public: void *operator new [](size_t size) { - MemStatAccumulator& accumulator = sMemStat.getPrimaryAccumulator(); + MemStatAccumulator& accumulator = DERIVED::sMemStat.getCurrentAccumulator(); accumulator.mSize.sample(accumulator.mSize.hasValue() ? accumulator.mSize.getLastValue() + (F64)size : (F64)size); accumulator.mAllocatedCount++; @@ -411,7 +426,7 @@ public: void operator delete[](void* ptr, size_t size) { - MemStatAccumulator& accumulator = sMemStat.getPrimaryAccumulator(); + MemStatAccumulator& accumulator = DERIVED::sMemStat.getCurrentAccumulator(); accumulator.mSize.sample(accumulator.mSize.hasValue() ? accumulator.mSize.getLastValue() - (F64)size : -(F64)size); accumulator.mAllocatedCount--; accumulator.mDeallocatedCount++; @@ -453,7 +468,7 @@ public: template<typename AMOUNT_T> AMOUNT_T& memClaimAmount(AMOUNT_T& size) { - MemStatAccumulator& accumulator = sMemStat.getPrimaryAccumulator(); + MemStatAccumulator& accumulator = DERIVED::sMemStat.getCurrentAccumulator(); mMemFootprint += (size_t)size; accumulator.mSize.sample(accumulator.mSize.hasValue() ? accumulator.mSize.getLastValue() + (F64)size : (F64)size); return size; @@ -477,7 +492,7 @@ public: template<typename AMOUNT_T> AMOUNT_T& memDisclaimAmount(AMOUNT_T& size) { - MemStatAccumulator& accumulator = sMemStat.getPrimaryAccumulator(); + MemStatAccumulator& accumulator = DERIVED::sMemStat.getCurrentAccumulator(); accumulator.mSize.sample(accumulator.mSize.hasValue() ? accumulator.mSize.getLastValue() - (F64)size : -(F64)size); return size; } @@ -490,7 +505,7 @@ private: { static void claim(mem_trackable_t& tracker, const TRACKED& tracked) { - MemStatAccumulator& accumulator = sMemStat.getPrimaryAccumulator(); + MemStatAccumulator& accumulator = DERIVED::sMemStat.getCurrentAccumulator(); size_t footprint = MemFootprint<TRACKED>::measure(tracked); accumulator.mSize.sample(accumulator.mSize.hasValue() ? accumulator.mSize.getLastValue() + (F64)footprint : (F64)footprint); tracker.mMemFootprint += footprint; @@ -498,7 +513,7 @@ private: static void disclaim(mem_trackable_t& tracker, const TRACKED& tracked) { - MemStatAccumulator& accumulator = sMemStat.getPrimaryAccumulator(); + MemStatAccumulator& accumulator = DERIVED::sMemStat.getCurrentAccumulator(); size_t footprint = MemFootprint<TRACKED>::measure(tracked); accumulator.mSize.sample(accumulator.mSize.hasValue() ? accumulator.mSize.getLastValue() - (F64)footprint : -(F64)footprint); tracker.mMemFootprint -= footprint; @@ -510,13 +525,13 @@ private: { static void claim(mem_trackable_t& tracker, TRACKED& tracked) { - MemStatAccumulator& accumulator = sMemStat.getPrimaryAccumulator(); + MemStatAccumulator& accumulator = DERIVED::sMemStat.getCurrentAccumulator(); accumulator.mChildSize.sample(accumulator.mChildSize.hasValue() ? accumulator.mChildSize.getLastValue() + (F64)MemFootprint<TRACKED>::measure(tracked) : (F64)MemFootprint<TRACKED>::measure(tracked)); } static void disclaim(mem_trackable_t& tracker, TRACKED& tracked) { - MemStatAccumulator& accumulator = sMemStat.getPrimaryAccumulator(); + MemStatAccumulator& accumulator = DERIVED::sMemStat.getCurrentAccumulator(); accumulator.mChildSize.sample(accumulator.mChildSize.hasValue() ? accumulator.mChildSize.getLastValue() - (F64)MemFootprint<TRACKED>::measure(tracked) : -(F64)MemFootprint<TRACKED>::measure(tracked)); } }; |