diff options
| author | Dave Parks <davep@lindenlab.com> | 2012-08-31 14:11:46 -0500 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2012-08-31 14:11:46 -0500 | 
| commit | de1d297deaedaeff212eb2ff13ec4edef21ce633 (patch) | |
| tree | cdb71f6eeeadd6a621031e85f19e9bfe36fe75d8 /indra | |
| parent | b7555a3309bda8e9689627901051aa90fcb7be34 (diff) | |
MAINT-1503 Disable tcmalloc and fix remaining alignment issues.
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/cmake/GooglePerfTools.cmake | 2 | ||||
| -rw-r--r-- | indra/llcharacter/llvisualparam.h | 3 | ||||
| -rw-r--r-- | indra/newview/lldrawable.cpp | 16 | ||||
| -rw-r--r-- | indra/newview/lldriverparam.h | 15 | ||||
| -rw-r--r-- | indra/newview/llpolymesh.h | 17 | ||||
| -rw-r--r-- | indra/newview/llpolymorph.cpp | 26 | ||||
| -rw-r--r-- | indra/newview/llpolymorph.h | 15 | ||||
| -rw-r--r-- | indra/newview/lltexlayerparams.h | 32 | ||||
| -rw-r--r-- | indra/newview/llviewervisualparam.h | 3 | 
9 files changed, 104 insertions, 25 deletions
| diff --git a/indra/cmake/GooglePerfTools.cmake b/indra/cmake/GooglePerfTools.cmake index 09501e0406..73b3642ae6 100644 --- a/indra/cmake/GooglePerfTools.cmake +++ b/indra/cmake/GooglePerfTools.cmake @@ -3,7 +3,7 @@ include(Prebuilt)  # If you want to enable or disable TCMALLOC in viewer builds, this is the place.  # set ON or OFF as desired. -set (USE_TCMALLOC ON) +set (USE_TCMALLOC OFF)  if (STANDALONE)    include(FindGooglePerfTools) diff --git a/indra/llcharacter/llvisualparam.h b/indra/llcharacter/llvisualparam.h index 694e27f371..281fb14781 100644 --- a/indra/llcharacter/llvisualparam.h +++ b/indra/llcharacter/llvisualparam.h @@ -89,6 +89,7 @@ protected:  // An interface class for a generalized parametric modification of the avatar mesh  // Contains data that is specific to each Avatar  //----------------------------------------------------------------------------- +LL_ALIGN_PREFIX(16)  class LLVisualParam  {  public: @@ -160,6 +161,6 @@ protected:  	S32					mID;				// id for storing weight/morphtarget compares compactly  	LLVisualParamInfo	*mInfo; -}; +} LL_ALIGN_POSTFIX(16);  #endif // LL_LLVisualParam_H diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index 46ec1abec1..7f6ed3f50e 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -254,9 +254,17 @@ S32 LLDrawable::findReferences(LLDrawable *drawablep)  	return count;  } +static LLFastTimer::DeclareTimer FTM_ALLOCATE_FACE("Allocate Face", true); +  LLFace*	LLDrawable::addFace(LLFacePool *poolp, LLViewerTexture *texturep)  { -	LLFace *face = new LLFace(this, mVObjp); +	 +	LLFace *face; +	{ +		LLFastTimer t(FTM_ALLOCATE_FACE); +		face = new LLFace(this, mVObjp); +	} +  	if (!face) llerrs << "Allocating new Face: " << mFaces.size() << llendl;  	if (face) @@ -279,7 +287,11 @@ LLFace*	LLDrawable::addFace(LLFacePool *poolp, LLViewerTexture *texturep)  LLFace*	LLDrawable::addFace(const LLTextureEntry *te, LLViewerTexture *texturep)  {  	LLFace *face; -	face = new LLFace(this, mVObjp); + +	{ +		LLFastTimer t(FTM_ALLOCATE_FACE); +		face = new LLFace(this, mVObjp); +	}  	face->setTEOffset(mFaces.size());  	face->setTexture(texturep); diff --git a/indra/newview/lldriverparam.h b/indra/newview/lldriverparam.h index 7a4d711d4e..216cf003e1 100644 --- a/indra/newview/lldriverparam.h +++ b/indra/newview/lldriverparam.h @@ -75,6 +75,7 @@ protected:  //----------------------------------------------------------------------------- +LL_ALIGN_PREFIX(16)  class LLDriverParam : public LLViewerVisualParam  {  	friend class LLPhysicsMotion; // physics motion needs to access driven params directly. @@ -83,6 +84,16 @@ public:  	LLDriverParam(LLWearable *wearablep);  	~LLDriverParam(); +	void* operator new(size_t size) +	{ +		return ll_aligned_malloc_16(size); +	} + +	void operator delete(void* ptr) +	{ +		ll_aligned_free_16(ptr); +	} +  	// Special: These functions are overridden by child classes  	LLDriverParamInfo*		getInfo() const { return (LLDriverParamInfo*)mInfo; }  	//   This sets mInfo and calls initialization functions @@ -116,13 +127,13 @@ protected:  	void setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight, bool upload_bake); -	LLVector4a	mDefaultVec; // temp holder +	LL_ALIGN_16(LLVector4a	mDefaultVec); // temp holder  	typedef std::vector<LLDrivenEntry> entry_list_t;  	entry_list_t mDriven;  	LLViewerVisualParam* mCurrentDistortionParam;  	// Backlink only; don't make this an LLPointer.  	LLVOAvatar* mAvatarp;  	LLWearable* mWearablep; -}; +} LL_ALIGN_POSTFIX(16);  #endif  // LL_LLDRIVERPARAM_H diff --git a/indra/newview/llpolymesh.h b/indra/newview/llpolymesh.h index ffb11a3f7e..28da230541 100644 --- a/indra/newview/llpolymesh.h +++ b/indra/newview/llpolymesh.h @@ -400,12 +400,24 @@ protected:  // LLPolySkeletalDeformation  // A set of joint scale data for deforming the avatar mesh  //----------------------------------------------------------------------------- + +LL_ALIGN_PREFIX(16)  class LLPolySkeletalDistortion : public LLViewerVisualParam  {  public:  	LLPolySkeletalDistortion(LLVOAvatar *avatarp);  	~LLPolySkeletalDistortion(); +	void* operator new(size_t size) +	{ +		return ll_aligned_malloc_16(size); +	} + +	void operator delete(void* ptr) +	{ +		ll_aligned_free_16(ptr); +	} +  	// Special: These functions are overridden by child classes  	LLPolySkeletalDistortionInfo*	getInfo() const { return (LLPolySkeletalDistortionInfo*)mInfo; }  	//   This sets mInfo and calls initialization functions @@ -426,13 +438,14 @@ public:  	/*virtual*/ const LLVector4a*	getNextDistortion(U32 *index, LLPolyMesh **poly_mesh){index = 0; poly_mesh = NULL; return NULL;};  protected: +	LL_ALIGN_16(LLVector4a	mDefaultVec); +  	typedef std::map<LLJoint*, LLVector3> joint_vec_map_t;  	joint_vec_map_t mJointScales;  	joint_vec_map_t mJointOffsets; -	LLVector4a	mDefaultVec;  	// Backlink only; don't make this an LLPointer.  	LLVOAvatar *mAvatar; -}; +} LL_ALIGN_POSTFIX(16);  #endif // LL_LLPOLYMESH_H diff --git a/indra/newview/llpolymorph.cpp b/indra/newview/llpolymorph.cpp index d25d1420ee..dea8868034 100644 --- a/indra/newview/llpolymorph.cpp +++ b/indra/newview/llpolymorph.cpp @@ -73,9 +73,11 @@ LLPolyMorphData::LLPolyMorphData(const LLPolyMorphData &rhs) :  {  	const S32 numVertices = mNumIndices; -	mCoords = new LLVector4a[numVertices]; -	mNormals = new LLVector4a[numVertices]; -	mBinormals = new LLVector4a[numVertices]; +	U32 size = sizeof(LLVector4a)*numVertices; + +	mCoords = (LLVector4a*) ll_aligned_malloc_16(size); +	mNormals = (LLVector4a*) ll_aligned_malloc_16(size); +	mBinormals = (LLVector4a*) ll_aligned_malloc_16(size);  	mTexCoords = new LLVector2[numVertices];  	mVertexIndices = new U32[numVertices]; @@ -95,11 +97,12 @@ LLPolyMorphData::LLPolyMorphData(const LLPolyMorphData &rhs) :  //-----------------------------------------------------------------------------  LLPolyMorphData::~LLPolyMorphData()  { -	delete [] mVertexIndices; -	delete [] mCoords; -	delete [] mNormals; -	delete [] mBinormals; +	ll_aligned_free_16(mCoords); +	ll_aligned_free_16(mNormals); +	ll_aligned_free_16(mBinormals); +  	delete [] mTexCoords; +	delete [] mVertexIndices;  }  //----------------------------------------------------------------------------- @@ -121,9 +124,12 @@ BOOL LLPolyMorphData::loadBinary(LLFILE *fp, LLPolyMeshSharedData *mesh)  	//-------------------------------------------------------------------------  	// allocate vertices  	//------------------------------------------------------------------------- -	mCoords = new LLVector4a[numVertices]; -	mNormals = new LLVector4a[numVertices]; -	mBinormals = new LLVector4a[numVertices]; +	 +	U32 size = sizeof(LLVector4a)*numVertices; +	 +	mCoords = (LLVector4a*) ll_aligned_malloc_16(size); +	mNormals = (LLVector4a*) ll_aligned_malloc_16(size); +	mBinormals = (LLVector4a*) ll_aligned_malloc_16(size);  	mTexCoords = new LLVector2[numVertices];  	// Actually, we are allocating more space than we need for the skiplist  	mVertexIndices = new U32[numVertices]; diff --git a/indra/newview/llpolymorph.h b/indra/newview/llpolymorph.h index 46e23b7792..792ce62290 100644 --- a/indra/newview/llpolymorph.h +++ b/indra/newview/llpolymorph.h @@ -41,6 +41,7 @@ class LLWearable;  //-----------------------------------------------------------------------------  // LLPolyMorphData()  //----------------------------------------------------------------------------- +LL_ALIGN_PREFIX(16)  class LLPolyMorphData  {  public: @@ -48,6 +49,16 @@ public:  	~LLPolyMorphData();  	LLPolyMorphData(const LLPolyMorphData &rhs); +	void* operator new(size_t size) +	{ +		return ll_aligned_malloc_16(size); +	} + +	void operator delete(void* ptr) +	{ +		ll_aligned_free_16(ptr); +	} +  	BOOL			loadBinary(LLFILE* fp, LLPolyMeshSharedData *mesh);  	const std::string& getName() { return mName; } @@ -65,9 +76,9 @@ public:  	F32					mTotalDistortion;	// vertex distortion summed over entire morph  	F32					mMaxDistortion;		// maximum single vertex distortion in a given morph -	LLVector4a			mAvgDistortion;		// average vertex distortion, to infer directionality of the morph +	LL_ALIGN_16(LLVector4a			mAvgDistortion);		// average vertex distortion, to infer directionality of the morph  	LLPolyMeshSharedData*	mMesh; -}; +} LL_ALIGN_POSTFIX(16);  //-----------------------------------------------------------------------------  // LLPolyVertexMask() diff --git a/indra/newview/lltexlayerparams.h b/indra/newview/lltexlayerparams.h index 2c0da60b48..c812199796 100644 --- a/indra/newview/lltexlayerparams.h +++ b/indra/newview/lltexlayerparams.h @@ -58,6 +58,7 @@ protected:  // LLTexLayerParamAlpha  //   //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +LL_ALIGN_PREFIX(16)  class LLTexLayerParamAlpha : public LLTexLayerParam  {  public: @@ -65,6 +66,16 @@ public:  	LLTexLayerParamAlpha( LLVOAvatar* avatar );  	/*virtual*/ ~LLTexLayerParamAlpha(); +	void* operator new(size_t size) +	{ +		return ll_aligned_malloc_16(size); +	} + +	void operator delete(void* ptr) +	{ +		ll_aligned_free_16(ptr); +	} +  	/*virtual*/ LLViewerVisualParam* cloneParam(LLWearable* wearable = NULL) const;  	// LLVisualParam Virtual functions @@ -94,7 +105,7 @@ private:  	LLPointer<LLImageRaw>	mStaticImageRaw;  	BOOL					mNeedsCreateTexture;  	BOOL					mStaticImageInvalid; -	LLVector4a				mAvgDistortionVec; +	LL_ALIGN_16(LLVector4a				mAvgDistortionVec);  	F32						mCachedEffectiveWeight;  public: @@ -104,7 +115,7 @@ public:  	typedef std::list< LLTexLayerParamAlpha* > param_alpha_ptr_list_t;  	static param_alpha_ptr_list_t sInstances; -}; +} LL_ALIGN_POSTFIX(16);  class LLTexLayerParamAlphaInfo : public LLViewerVisualParamInfo  {  	friend class LLTexLayerParamAlpha; @@ -128,6 +139,8 @@ private:  // LLTexLayerParamColor  //  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +LL_ALIGN_PREFIX(16)  class LLTexLayerParamColor : public LLTexLayerParam  {  public: @@ -141,6 +154,17 @@ public:  	LLTexLayerParamColor( LLTexLayerInterface* layer );  	LLTexLayerParamColor( LLVOAvatar* avatar ); + +	void* operator new(size_t size) +	{ +		return ll_aligned_malloc_16(size); +	} + +	void operator delete(void* ptr) +	{ +		ll_aligned_free_16(ptr); +	} +  	/* virtual */ ~LLTexLayerParamColor();  	/*virtual*/ LLViewerVisualParam* cloneParam(LLWearable* wearable = NULL) const; @@ -166,8 +190,8 @@ public:  protected:  	virtual void onGlobalColorChanged(bool upload_bake) {}  private: -	LLVector4a				mAvgDistortionVec; -}; +	LL_ALIGN_16(LLVector4a				mAvgDistortionVec); +} LL_ALIGN_POSTFIX(16);  class LLTexLayerParamColorInfo : public LLViewerVisualParamInfo  { diff --git a/indra/newview/llviewervisualparam.h b/indra/newview/llviewervisualparam.h index 3bc95cbfbf..2826e6c316 100644 --- a/indra/newview/llviewervisualparam.h +++ b/indra/newview/llviewervisualparam.h @@ -65,6 +65,7 @@ protected:  // VIRTUAL CLASS  // a viewer side interface class for a generalized parametric modification of the avatar mesh  //----------------------------------------------------------------------------- +LL_ALIGN_PREFIX(16)  class LLViewerVisualParam : public LLVisualParam  {  public: @@ -104,6 +105,6 @@ public:  	BOOL				getCrossWearable() const 	{ return getInfo()->mCrossWearable; } -}; +} LL_ALIGN_POSTFIX(16);  #endif // LL_LLViewerVisualParam_H | 
