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_METHOD_H_ 00036 #define _ALLOC_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/allocObjectTrace.h" 00044 #include "../alloc/allocThreadObjectMethod.h" 00045 #include "../alloc/allocObjectMethodKey.h" 00046 #include "../allocator/allocator.h" 00047 00058 class AllocObjectMethod: public LI1, 00059 public LI2, 00060 public LI3, 00061 public AllocAbstractStatThreadObject, 00062 public IdObject { 00063 public: 00064 00066 AllocObject* object; 00067 00069 Method* method; 00070 00072 List<AllocObjectTrace,LI2> objectTraces; 00073 00075 List<AllocThreadObjectMethod,LI2> threadObjectMethods; 00076 00077 public: 00078 00080 AllocObjectMethod() : 00081 00082 object( NULL), 00083 method( NULL) 00084 00085 {} 00086 00088 virtual ~AllocObjectMethod() {} 00089 00098 virtual void addMemoryStat( jint size); 00099 00108 virtual void subMemoryStat( jint size); 00109 00113 virtual void clearFlag(); 00114 00123 const AllocObjectMethodKey& getKey(AllocObjectMethodKey& key); 00124 00134 int operator==(const AllocObjectMethodKey& key); 00135 00142 static int hashKey(const AllocObjectMethodKey& key); 00143 00146 void deactivate(); 00147 00148 #ifdef USE_ALLOCATOR 00149 private: 00150 00152 static Allocator _allocator; 00153 00154 public: 00155 00158 void* operator new( size_t sz) { return _allocator.get( sz);} 00159 00162 void operator delete( void* unit) { _allocator.put( unit);} 00163 #endif 00164 00165 public: 00166 00171 virtual eClassIdent getClassIdent() { return ALLOC_OBJECT_METHOD;} 00172 00179 virtual int isActive(); 00180 00186 virtual int isChanged() { return (activeChanged() || dataChanged());} // order dependent ! 00187 00190 virtual void setUnchanged(); 00191 }; 00192 00193 #endif // _ALLOC_OBJECT_METHOD_H_