00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef _METHOD_H_
00036 #define _METHOD_H_
00037
00038 #include "../main/includes.h"
00039 #include "../list/listItem.h"
00040 #include "../commun2/idObject.h"
00041 #include "../alloc/allocStatData.h"
00042 #include "../cpu/cpuStatData.h"
00043 #include "../mon/monStatData.h"
00044 #include "../commun/binaryFormat.h"
00045 #include "../string/string.h"
00046 #include "../list/list.h"
00047 #include "../alloc/allocTrace.h"
00048 #include "../alloc/allocObjectMethod.h"
00049 #include "../alloc/allocThreadMethod.h"
00050 #include "../cpu/cpuTrace.h"
00051 #include "../cpu/cpuThreadMethod.h"
00052 #include "../mon/monTrace.h"
00053 #include "../mon/monThreadMethod.h"
00054 #include "../commun/buffer.h"
00055 #include "../allocator/allocator.h"
00056
00065 class Method: public LI1,
00066 public LI2,
00067 public IdObject,
00068 public AllocStatData,
00069 public CpuStatData,
00070 public MonStatData,
00071 public InfoBinaryFormat {
00072 public:
00073
00075 String methodName;
00076
00078 String methodSignature;
00079
00081 jint startLineno;
00082
00084 jint endLineno;
00085
00087 jmethodID methodId;
00088
00090 Class* clss;
00091
00093 List<AllocTrace,LI2> allocTraces;
00094
00096 List<AllocObjectMethod,LI2> allocObjectMethods;
00097
00099 List<AllocThreadMethod,LI3> allocThreadMethods;
00100
00102 List<CpuTrace,LI2> cpuTraces;
00103
00105 List<CpuThreadMethod,LI3> cpuThreadMethods;
00106
00108 List<MonTrace,LI2> monTraces;
00109
00111 List<MonThreadMethod,LI3> monThreadMethods;
00112
00113 public:
00114
00116 Method() :
00117
00118 startLineno( 0),
00119 endLineno( 0),
00120 methodId( 0),
00121 clss( NULL)
00122
00123 {}
00124
00126 virtual ~Method() {}
00127
00136 const jmethodID& getKey(jmethodID& key) { return key = methodId;}
00137
00147 int operator==(const jmethodID& key) { return (methodId == key);}
00148
00155 static int hashKey(const jmethodID& key) { return (int)key;}
00156
00165 virtual Buffer& infoToBin( Buffer& b);
00166
00169 void deactivate();
00170
00171 #ifdef USE_ALLOCATOR
00172 private:
00173
00175 static Allocator _allocator;
00176
00177 public:
00178
00181 void* operator new( size_t sz) { return _allocator.get( sz);}
00182
00185 void operator delete( void* unit) { _allocator.put( unit);}
00186 #endif
00187
00188 public:
00189
00194 virtual eClassIdent getClassIdent() { return METHOD;}
00195
00202 virtual int isActive();
00203
00209 virtual int isChanged();
00210
00213 virtual void setUnchanged();
00214 };
00215
00216 #endif // _METHOD_H_