llmemtype.h

Go to the documentation of this file.
00001 
00032 #ifndef LL_MEMTYPE_H
00033 #define LL_MEMTYPE_H
00034 
00035 //----------------------------------------------------------------------------
00036 //----------------------------------------------------------------------------
00037 
00038 class LLMemType;
00039 
00040 extern void* ll_allocate (size_t size);
00041 extern void ll_release (void *p);
00042 
00043 #define MEM_TRACK_MEM 0
00044 #define MEM_TRACK_TYPE (1 && MEM_TRACK_MEM)
00045 
00046 #if MEM_TRACK_TYPE
00047 #define MEM_DUMP_DATA 1
00048 #define MEM_TYPE_NEW(T) \
00049 static void* operator new(size_t s) { LLMemType mt(T); return ll_allocate(s); } \
00050 static void  operator delete(void* p) { ll_release(p); }
00051 
00052 #else
00053 #define MEM_TYPE_NEW(T)
00054 #endif // MEM_TRACK_TYPE
00055 
00056 
00057 //----------------------------------------------------------------------------
00058 
00059 class LLMemType
00060 {
00061 public:
00062         // Also update sTypeDesc in llmemory.cpp
00063         enum EMemType
00064         {
00065                 MTYPE_INIT,
00066                 MTYPE_STARTUP,
00067                 MTYPE_MAIN,
00068 
00069                 MTYPE_IMAGEBASE,
00070                 MTYPE_IMAGERAW,
00071                 MTYPE_IMAGEFORMATTED,
00072                 
00073                 MTYPE_APPFMTIMAGE,
00074                 MTYPE_APPRAWIMAGE,
00075                 MTYPE_APPAUXRAWIMAGE,
00076                 
00077                 MTYPE_DRAWABLE,
00078                 MTYPE_OBJECT,
00079                 MTYPE_VERTEX_DATA,
00080                 MTYPE_SPACE_PARTITION,
00081                 MTYPE_PIPELINE,
00082                 MTYPE_AVATAR,
00083                 MTYPE_PARTICLES,
00084                 MTYPE_REGIONS,
00085                 MTYPE_INVENTORY,
00086                 MTYPE_ANIMATION,
00087                 MTYPE_VOLUME,
00088                 MTYPE_PRIMITIVE,
00089 
00090                 MTYPE_NETWORK,
00091                 MTYPE_PHYSICS,
00092                 MTYPE_INTERESTLIST,
00093                 
00094                 MTYPE_SCRIPT,
00095                 MTYPE_SCRIPT_RUN,
00096                 MTYPE_SCRIPT_BYTECODE,
00097                 
00098                 MTYPE_IO_PUMP,
00099                 MTYPE_IO_TCP,
00100                 MTYPE_IO_BUFFER,
00101                 MTYPE_IO_HTTP_SERVER,
00102                 MTYPE_IO_SD_SERVER,
00103                 MTYPE_IO_SD_CLIENT,
00104                 MTYPE_IO_URL_REQUEST,
00105 
00106                 MTYPE_TEMP1,
00107                 MTYPE_TEMP2,
00108                 MTYPE_TEMP3,
00109                 MTYPE_TEMP4,
00110                 MTYPE_TEMP5,
00111                 MTYPE_TEMP6,
00112                 MTYPE_TEMP7,
00113                 MTYPE_TEMP8,
00114                 MTYPE_TEMP9,
00115 
00116                 MTYPE_OTHER, // Special, used by display code
00117                 
00118                 MTYPE_NUM_TYPES
00119         };
00120         enum { MTYPE_MAX_DEPTH = 64 };
00121         
00122 public:
00123         LLMemType(EMemType type)
00124         {
00125 #if MEM_TRACK_TYPE
00126                 if (type < 0 || type >= MTYPE_NUM_TYPES)
00127                         llerrs << "LLMemType error" << llendl;
00128                 if (sCurDepth < 0 || sCurDepth >= MTYPE_MAX_DEPTH)
00129                         llerrs << "LLMemType error" << llendl;
00130                 sType[sCurDepth] = sCurType;
00131                 sCurDepth++;
00132                 sCurType = type;
00133 #endif
00134         }
00135         ~LLMemType()
00136         {
00137 #if MEM_TRACK_TYPE
00138                 sCurDepth--;
00139                 sCurType = sType[sCurDepth];
00140 #endif
00141         }
00142 
00143         static void reset();
00144         static void printMem();
00145         
00146 public:
00147 #if MEM_TRACK_TYPE
00148         static S32 sCurDepth;
00149         static S32 sCurType;
00150         static S32 sType[MTYPE_MAX_DEPTH];
00151         static S32 sMemCount[MTYPE_NUM_TYPES];
00152         static S32 sMaxMemCount[MTYPE_NUM_TYPES];
00153         static S32 sNewCount[MTYPE_NUM_TYPES];
00154         static S32 sOverheadMem;
00155         static const char* sTypeDesc[MTYPE_NUM_TYPES];
00156 #endif
00157         static S32 sTotalMem;
00158         static S32 sMaxTotalMem;
00159 };
00160 
00161 //----------------------------------------------------------------------------
00162 
00163 #endif
00164 

Generated on Fri May 16 08:32:04 2008 for SecondLife by  doxygen 1.5.5