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_THREAD_OBJECT_TRACE_H_ 00036 #define _ALLOC_THREAD_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 "../alloc/allocThreadObjectTraceKey.h" 00043 #include "../allocator/allocator.h" 00044 00054 class AllocThreadObjectTrace: public LI1, 00055 public LI2, 00056 public LI3, 00057 public LI4, 00058 public AllocAbstractStatThreadObject, 00059 public IdObject { 00060 public: 00061 00063 AllocObjectTrace* objectTrace; 00064 00066 AllocThreadObjectMethod* threadObjectMethod; 00067 00069 AllocThreadTrace* threadTrace; 00070 00071 public: 00072 00074 AllocThreadObjectTrace() : 00075 00076 objectTrace( NULL), 00077 threadObjectMethod( NULL), 00078 threadTrace( NULL) 00079 00080 {} 00081 00083 virtual ~AllocThreadObjectTrace() {} 00084 00093 virtual void addMemoryStat( jint size); 00094 00103 virtual void subMemoryStat( jint size); 00104 00108 virtual void clearFlag(); 00109 00118 const AllocThreadObjectTraceKey& getKey(AllocThreadObjectTraceKey& key); 00119 00129 int operator==(const AllocThreadObjectTraceKey& key); 00130 00137 static int hashKey(const AllocThreadObjectTraceKey& key); 00138 00141 void deactivate(); 00142 00143 #ifdef USE_ALLOCATOR 00144 private: 00145 00147 static Allocator _allocator; 00148 00149 public: 00150 00153 void* operator new( size_t sz) { return _allocator.get( sz);} 00154 00157 void operator delete( void* unit) { _allocator.put( unit);} 00158 #endif 00159 00160 public: 00161 00166 virtual eClassIdent getClassIdent() { return ALLOC_THREAD_OBJECT_TRACE;} 00167 00174 virtual int isActive(); 00175 00181 virtual int isChanged() { return (activeChanged() || dataChanged());} // order dependent ! 00182 00185 virtual void setUnchanged(); 00186 }; 00187 00188 #endif // _ALLOC_THREAD_OBJECT_TRACE_H_