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 #include "../mon/monThreadTrace.h" 00036 #include "../mon/monThreadMethod.h" 00037 #include "../shared/thread.h" 00038 #include "../mon/monTrace.h" 00039 #include "../prof/prof.h" 00040 00041 #ifdef USE_ALLOCATOR 00042 Allocator MonThreadTrace::_allocator; 00043 #endif 00044 00045 void MonThreadTrace::addMonStat(jlong addHits, jlong addTime) { 00046 00047 MonStatData::addMonStat(addHits, addTime); 00048 threadMethod->addMonStat(addHits, addTime); 00049 trace->addMonStat(addHits, addTime); 00050 } 00051 00052 void MonThreadTrace::deactivate() { 00053 00054 Prof::prof().activeMonThreadTraces.removeNoRehash(this); 00055 } 00056 00057 const MonThreadTraceKey& MonThreadTrace::getKey( MonThreadTraceKey& key) { 00058 00059 threadMethod->thread->getKey(key.envId); 00060 trace->getKey(key.traceKey); 00061 00062 return key; 00063 } 00064 00065 int MonThreadTrace::operator==( const MonThreadTraceKey& key) { 00066 00067 return (*threadMethod->thread == key.envId) && (*trace == key.traceKey); 00068 } 00069 00070 int MonThreadTrace::hashKey( const MonThreadTraceKey& key) { 00071 00072 return Thread::hashKey(key.envId) ^ Trace::hashKey(key.traceKey); 00073 } 00074 00075 int MonThreadTrace::isActive() { 00076 00077 return (trace->isActive() && threadMethod->isActive()); 00078 } 00079 00080 void MonThreadTrace::setUnchanged() { 00081 00082 IdObject::setUnchanged(); 00083 clearDataChanged(); 00084 }