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 _CPU_STACK_H_ 00036 #define _CPU_STACK_H_ 00037 00038 #include "../main/includes.h" 00039 00052 class CpuStack { 00053 00055 struct Frame { 00056 00058 JVMPI_CallFrame callFrame; 00059 00061 jlong entryTime; 00062 00064 jlong calleesTime; 00065 }; 00066 00067 private: 00068 00070 Frame* stack; 00071 00073 long size; 00074 00076 long top; 00077 00078 public: 00079 00081 CpuStack() : 00082 00083 stack( NULL), 00084 size( 0), 00085 top( -1) 00086 00087 {} 00088 00090 ~CpuStack(); 00091 00097 void push( JVMPI_CallFrame& callFrame, jlong entryTime); 00098 00105 void pop( jlong exitTime, jlong& totalTime, jlong& pureTime); 00106 00114 int getTopCallTrace(int maxFrames, JVMPI_CallFrame* frames) const; 00115 00116 private: 00117 00119 void grow(); 00120 }; 00121 00122 #endif // _CPU_STACK_H_