diff options
Diffstat (limited to 'indra/llcommon')
| -rw-r--r-- | indra/llcommon/llfasttimer.h | 2 | ||||
| -rw-r--r-- | indra/llcommon/llmemory.h | 1 | ||||
| -rw-r--r-- | indra/llcommon/llthreadlocalstorage.h | 21 | ||||
| -rw-r--r-- | indra/llcommon/lltrace.h | 26 | ||||
| -rw-r--r-- | indra/llcommon/lltracerecording.h | 18 | 
5 files changed, 45 insertions, 23 deletions
| diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h index 995eebd16a..fb2868ff98 100644 --- a/indra/llcommon/llfasttimer.h +++ b/indra/llcommon/llfasttimer.h @@ -49,7 +49,7 @@ class ThreadTimerStack  :	public BlockTimerStackRecord,   	public LLThreadLocalSingleton<ThreadTimerStack>  { -	friend LLThreadLocalSingleton<ThreadTimerStack>; +	friend class LLThreadLocalSingleton<ThreadTimerStack>;  	ThreadTimerStack()   	{} diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h index e725bdd9fa..7e73afe06a 100644 --- a/indra/llcommon/llmemory.h +++ b/indra/llcommon/llmemory.h @@ -27,6 +27,7 @@  #define LLMEMORY_H  #include "linden_common.h" +#include "stdint.h"  class LLMutex ; diff --git a/indra/llcommon/llthreadlocalstorage.h b/indra/llcommon/llthreadlocalstorage.h index fdf0c18085..5a38d54eea 100644 --- a/indra/llcommon/llthreadlocalstorage.h +++ b/indra/llcommon/llthreadlocalstorage.h @@ -215,15 +215,28 @@ private:  	LLThreadLocalSingleton(const LLThreadLocalSingleton& other);  	virtual void initSingleton() {} +#ifdef LL_WINDOWS  	static __declspec(thread) DERIVED_TYPE* sInstance;  	static __declspec(thread) EInitState sInitState; +#elif LL_LINUX +	static __thread DERIVED_TYPE* sInstance; +	static __thread EInitState sInitState; +#endif  }; +#ifdef LL_WINDOWS  template<typename DERIVED_TYPE>  __declspec(thread) DERIVED_TYPE* LLThreadLocalSingleton<DERIVED_TYPE>::sInstance = NULL;  template<typename DERIVED_TYPE>  __declspec(thread) typename LLThreadLocalSingleton<DERIVED_TYPE>::EInitState LLThreadLocalSingleton<DERIVED_TYPE>::sInitState = LLThreadLocalSingleton<DERIVED_TYPE>::UNINITIALIZED; +#elif LL_LINUX +template<typename DERIVED_TYPE> +__thread DERIVED_TYPE* LLThreadLocalSingleton<DERIVED_TYPE>::sInstance = NULL; + +template<typename DERIVED_TYPE> +__thread typename LLThreadLocalSingleton<DERIVED_TYPE>::EInitState LLThreadLocalSingleton<DERIVED_TYPE>::sInitState = LLThreadLocalSingleton<DERIVED_TYPE>::UNINITIALIZED; +#endif  template<typename DERIVED_TYPE>  class LLThreadLocalSingletonPointer @@ -245,10 +258,18 @@ public:  	}  private: +#ifdef LL_WINDOWS  	static __declspec(thread) DERIVED_TYPE* sInstance; +#elif LL_LINUX +	static __thread DERIVED_TYPE* sInstance; +#endif  };  template<typename DERIVED_TYPE> +#ifdef LL_WINDOWS  __declspec(thread) DERIVED_TYPE* LLThreadLocalSingletonPointer<DERIVED_TYPE>::sInstance = NULL; +#elif LL_LINUX +__thread DERIVED_TYPE* LLThreadLocalSingletonPointer<DERIVED_TYPE>::sInstance = NULL; +#endif  #endif // LL_LLTHREADLOCALSTORAGE_H diff --git a/indra/llcommon/lltrace.h b/indra/llcommon/lltrace.h index 285d4389af..e15cffd7d2 100644 --- a/indra/llcommon/lltrace.h +++ b/indra/llcommon/lltrace.h @@ -614,7 +614,7 @@ struct MemFootprint<T*>  	static size_t measure()  	{ -		return MemFootPrint<T>::measure(); +		return MemFootprint<T>::measure();  	}  }; @@ -730,17 +730,17 @@ public:  	}  	// claim memory associated with other objects/data as our own, adding to our calculated footprint -	template<typename T> -	T& memClaim(T& value) +	template<typename CLAIM_T> +	CLAIM_T& memClaim(CLAIM_T& value)  	{ -		TrackMemImpl<T>::claim(*this, value); +		TrackMemImpl<CLAIM_T>::claim(*this, value);  		return value;  	} -	template<typename T> -	const T& memClaim(const T& value) +	template<typename CLAIM_T> +	const CLAIM_T& memClaim(const CLAIM_T& value)  	{ -		TrackMemImpl<T>::claim(*this, value); +		TrackMemImpl<CLAIM_T>::claim(*this, value);  		return value;  	} @@ -756,17 +756,17 @@ public:  	}  	// remove memory we had claimed from our calculated footprint -	template<typename T> -	T& memDisclaim(T& value) +	template<typename CLAIM_T> +	CLAIM_T& memDisclaim(CLAIM_T& value)  	{ -		TrackMemImpl<T>::disclaim(*this, value); +		TrackMemImpl<CLAIM_T>::disclaim(*this, value);  		return value;  	} -	template<typename T> -	const T& memDisclaim(const T& value) +	template<typename CLAIM_T> +	const CLAIM_T& memDisclaim(const CLAIM_T& value)  	{ -		TrackMemImpl<T>::disclaim(*this, value); +		TrackMemImpl<CLAIM_T>::disclaim(*this, value);  		return value;  	} diff --git a/indra/llcommon/lltracerecording.h b/indra/llcommon/lltracerecording.h index f2d7d42211..aa3200e5ad 100644 --- a/indra/llcommon/lltracerecording.h +++ b/indra/llcommon/lltracerecording.h @@ -141,7 +141,7 @@ namespace LLTrace  		template <typename T>  		T getSum(const Count<T>& stat) const  		{ -			return (T)getSum(static_cast<const TraceType<CountAccumulator<LLUnits::HighestPrecisionType<T>::type_t> >&> (stat)); +			return (T)getSum(static_cast<const TraceType<CountAccumulator<typename LLUnits::HighestPrecisionType<T>::type_t> >&> (stat));  		}  		F64 getPerSec(const TraceType<CountAccumulator<F64> >& stat) const; @@ -149,7 +149,7 @@ namespace LLTrace  		template <typename T>  		T getPerSec(const Count<T>& stat) const  		{ -			return (T)getPerSec(static_cast<const TraceType<CountAccumulator<LLUnits::HighestPrecisionType<T>::type_t> >&> (stat)); +			return (T)getPerSec(static_cast<const TraceType<CountAccumulator<typename LLUnits::HighestPrecisionType<T>::type_t> >&> (stat));  		}  		U32 getSampleCount(const TraceType<CountAccumulator<F64> >& stat) const; @@ -162,7 +162,7 @@ namespace LLTrace  		template <typename T>  		T getSum(const Measurement<T>& stat) const  		{ -			return (T)getSum(static_cast<const TraceType<MeasurementAccumulator<LLUnits::HighestPrecisionType<T>::type_t> >&> (stat)); +			return (T)getSum(static_cast<const TraceType<MeasurementAccumulator<typename LLUnits::HighestPrecisionType<T>::type_t> >&> (stat));  		}  		F64 getPerSec(const TraceType<MeasurementAccumulator<F64> >& stat) const; @@ -170,7 +170,7 @@ namespace LLTrace  		template <typename T>  		T getPerSec(const Measurement<T>& stat) const  		{ -			return (T)getPerSec(static_cast<const TraceType<MeasurementAccumulator<LLUnits::HighestPrecisionType<T>::type_t> >&> (stat)); +			return (T)getPerSec(static_cast<const TraceType<MeasurementAccumulator<typename LLUnits::HighestPrecisionType<T>::type_t> >&> (stat));  		}  		F64 getMin(const TraceType<MeasurementAccumulator<F64> >& stat) const; @@ -178,7 +178,7 @@ namespace LLTrace  		template <typename T>  		T getMin(const Measurement<T>& stat) const  		{ -			return (T)getMin(static_cast<const TraceType<MeasurementAccumulator<LLUnits::HighestPrecisionType<T>::type_t> >&> (stat)); +			return (T)getMin(static_cast<const TraceType<MeasurementAccumulator<typename LLUnits::HighestPrecisionType<T>::type_t> >&> (stat));  		}  		F64 getMax(const TraceType<MeasurementAccumulator<F64> >& stat) const; @@ -186,7 +186,7 @@ namespace LLTrace  		template <typename T>  		T getMax(const Measurement<T>& stat) const  		{ -			return (T)getMax(static_cast<const TraceType<MeasurementAccumulator<LLUnits::HighestPrecisionType<T>::type_t> >&> (stat)); +			return (T)getMax(static_cast<const TraceType<MeasurementAccumulator<typename LLUnits::HighestPrecisionType<T>::type_t> >&> (stat));  		}  		F64 getMean(const TraceType<MeasurementAccumulator<F64> >& stat) const; @@ -194,7 +194,7 @@ namespace LLTrace  		template <typename T>  		T getMean(Measurement<T>& stat) const  		{ -			return (T)getMean(static_cast<const TraceType<MeasurementAccumulator<LLUnits::HighestPrecisionType<T>::type_t> >&> (stat)); +			return (T)getMean(static_cast<const TraceType<MeasurementAccumulator<typename LLUnits::HighestPrecisionType<T>::type_t> >&> (stat));  		}  		F64 getStandardDeviation(const TraceType<MeasurementAccumulator<F64> >& stat) const; @@ -202,7 +202,7 @@ namespace LLTrace  		template <typename T>  		T getStandardDeviation(const Measurement<T>& stat) const  		{ -			return (T)getMean(static_cast<const TraceType<MeasurementAccumulator<LLUnits::HighestPrecisionType<T>::type_t> >&> (stat)); +			return (T)getMean(static_cast<const TraceType<MeasurementAccumulator<typename LLUnits::HighestPrecisionType<T>::type_t> >&> (stat));  		}  		F64 getLastValue(const TraceType<MeasurementAccumulator<F64> >& stat) const; @@ -210,7 +210,7 @@ namespace LLTrace  		template <typename T>  		T getLastValue(const Measurement<T>& stat) const  		{ -			return (T)getLastValue(static_cast<const TraceType<MeasurementAccumulator<LLUnits::HighestPrecisionType<T>::type_t> >&> (stat)); +			return (T)getLastValue(static_cast<const TraceType<MeasurementAccumulator<typename LLUnits::HighestPrecisionType<T>::type_t> >&> (stat));  		}  		U32 getSampleCount(const TraceType<MeasurementAccumulator<F64> >& stat) const; | 
