00001 /* 00002 * Sun Public License Notice 00003 * 00004 * The contents of this file are subject to the Sun Public License 00005 * Version 1.0 (the "License"); you may not use this file except 00006 * in compliance with the License. A copy of the License is available 00007 * at http://www.sun.com/ 00008 * 00009 * The Original Code is the Java Profiler module. The Initial Developers 00010 * of the Original Code are Jan Stola, Pavel Vacha, Michal Pise, Petr Luner, 00011 * Lukas Petru and Marek Przeczek. 00012 * 00013 * Portions created by Jan Stola are Copyright (C) 2000-2001. 00014 * All Rights Reserved. 00015 * 00016 * Portions created by Pavel Vacha are Copyright (C) 2000-2001. 00017 * All Rights Reserved. 00018 * 00019 * Portions created by Michal Pise are Copyright (C) 2000-2001. 00020 * All Rights Reserved. 00021 * 00022 * Portions created by Petr Luner are Copyright (C) 2000-2001. 00023 * All Rights Reserved. 00024 * 00025 * Portions created by Lukas Petru are Copyright (C) 2000-2001. 00026 * All Rights Reserved. 00027 * 00028 * Portions created by Marek Przeczek are Copyright (C) 2000-2001. 00029 * All Rights Reserved. 00030 * 00031 * Contributors: Jan Stola, Pavel Vacha, Michal Pise, Petr Luner, 00032 * Lukas Petru and Marek Przeczek. 00033 */ 00034 00035 #ifndef _ALLOC_OBJECT_TRACE_H_ 00036 #define _ALLOC_OBJECT_TRACE_H_ 00037 00038 #include "../main/includes.h" 00039 #include "../list/listItem.h" 00040 #include "../alloc/allocAbstractStatThreadObject.h" 00041 #include "../commun2/idObject.h" 00042 #include "../list/list.h" 00043 #include "../alloc/allocThreadObjectTrace.h" 00044 #include "../alloc/allocObjectTraceKey.h" 00045 #include "../allocator/allocator.h" 00046 00066 class AllocObjectTrace: public LI1, 00067 public LI2, 00068 public LI3, 00069 public AllocAbstractStatThreadObject, 00070 public IdObject { 00071 public: 00072 00074 AllocObjectMethod* objectMethod; 00075 00077 AllocTrace* trace; 00078 00080 List<AllocThreadObjectTrace,LI2> threadObjectTraces; 00081 00082 public: 00083 00085 AllocObjectTrace() : 00086 00087 objectMethod( NULL), 00088 trace( NULL) 00089 00090 {} 00091 00093 virtual ~AllocObjectTrace() {} 00094 00103 virtual void addMemoryStat( jint size); 00104 00113 virtual void subMemoryStat( jint size); 00114 00118 virtual void clearFlag(); 00119 00128 const AllocObjectTraceKey& getKey(AllocObjectTraceKey& key); 00129 00139 int operator==(const AllocObjectTraceKey& key); 00140 00147 static int hashKey(const AllocObjectTraceKey& key); 00148 00151 void deactivate(); 00152 00153 #ifdef USE_ALLOCATOR 00154 private: 00155 00157 static Allocator _allocator; 00158 00159 public: 00160 00163 void* operator new( size_t sz) { return _allocator.get( sz);} 00164 00167 void operator delete( void* unit) { _allocator.put( unit);} 00168 #endif 00169 00170 public: 00171 00176 virtual eClassIdent getClassIdent() { return ALLOC_OBJECT_TRACE;} 00177 00184 virtual int isActive(); 00185 00191 virtual int isChanged() { return (activeChanged() || dataChanged());} // order dependent ! 00192 00195 virtual void setUnchanged(); 00196 }; 00197 00198 #endif // _ALLOC_OBJECT_TRACE_H_