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 "../cpu/cpuThreadMethod.h" 00036 #include "../shared/method.h" 00037 #include "../prof/prof.h" 00038 #include "../cpu/cpuThreadTrace.h" 00039 00040 #ifdef USE_ALLOCATOR 00041 Allocator CpuThreadMethod::_allocator; 00042 #endif 00043 00044 void CpuThreadMethod::addCpuStat(jlong addHits, jlong addPureTime) { 00045 00046 CpuStatData::addCpuStat(addHits, addPureTime); 00047 method->addCpuStat(addHits, addPureTime); 00048 } 00049 00050 void CpuThreadMethod::deactivate() { 00051 00052 Prof::prof().activeCpuThreadMethods.removeNoRehash(this); 00053 00054 CpuThreadTrace* tt = threadTraces.first(); 00055 while (tt) { 00056 tt->deactivate(); 00057 tt = threadTraces.next(tt); 00058 } 00059 } 00060 00061 const CpuThreadMethodKey& CpuThreadMethod::getKey( CpuThreadMethodKey& key) { 00062 00063 thread->getKey(key.envId); 00064 method->getKey(key.methodId); 00065 00066 return key; 00067 } 00068 00069 int CpuThreadMethod::operator==( const CpuThreadMethodKey& key) { 00070 00071 return (*thread == key.envId) && (*method == key.methodId); 00072 } 00073 00074 int CpuThreadMethod::hashKey( const CpuThreadMethodKey& key) { 00075 00076 return Thread::hashKey(key.envId) ^ Method::hashKey(key.methodId); 00077 } 00078 00079 int CpuThreadMethod::isActive() { 00080 00081 return (method->isActive() && thread->isActive()); 00082 } 00083 00084 void CpuThreadMethod::setUnchanged() { 00085 00086 IdObject::setUnchanged(); 00087 clearDataChanged(); 00088 }