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_METHOD_H_ 00036 #define _ALLOC_THREAD_OBJECT_METHOD_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/allocThreadObjectMethodKey.h" 00045 #include "../allocator/allocator.h" 00046 00057 class AllocThreadObjectMethod: public LI1, 00058 public LI2, 00059 public LI3, 00060 public LI4, 00061 public AllocAbstractStatThreadObject, 00062 public IdObject { 00063 public: 00064 00066 AllocThreadObject* threadObject; 00067 00069 AllocObjectMethod* objectMethod; 00070 00072 AllocThreadMethod* threadMethod; 00073 00075 List<AllocThreadObjectTrace,LI1> threadObjectTraces; 00076 00077 public: 00078 00080 AllocThreadObjectMethod() : 00081 00082 threadObject( NULL), 00083 objectMethod( NULL), 00084 threadMethod( NULL) 00085 00086 {} 00087 00089 virtual ~AllocThreadObjectMethod() {} 00090 00099 virtual void addMemoryStat( jint size); 00100 00109 virtual void subMemoryStat( jint size); 00110 00114 virtual void clearFlag(); 00115 00124 const AllocThreadObjectMethodKey& getKey(AllocThreadObjectMethodKey& key); 00125 00135 int operator==(const AllocThreadObjectMethodKey& key); 00136 00143 static int hashKey(const AllocThreadObjectMethodKey& key); 00144 00147 void deactivate(); 00148 00149 #ifdef USE_ALLOCATOR 00150 private: 00151 00153 static Allocator _allocator; 00154 00155 public: 00156 00159 void* operator new( size_t sz) { return _allocator.get( sz);} 00160 00163 void operator delete( void* unit) { _allocator.put( unit);} 00164 #endif 00165 00166 public: 00167 00172 virtual eClassIdent getClassIdent() { return ALLOC_THREAD_OBJECT_METHOD;} 00173 00180 virtual int isActive(); 00181 00187 virtual int isChanged() { return (activeChanged() || dataChanged());} // order dependent ! 00188 00191 virtual void setUnchanged(); 00192 }; 00193 00194 #endif // _ALLOC_THREAD_OBJECT_METHOD_H_