Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono-tools.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMassimiliano Mantione <massi@mono-cvs.ximian.com>2009-06-12 11:57:02 +0400
committerMassimiliano Mantione <massi@mono-cvs.ximian.com>2009-06-12 11:57:02 +0400
commit7d647f4d12234f9d8bb0337c89015fa84fc656d9 (patch)
treec7a15d8d007ee0778913c45c563631e17ccddf06
parentca149782a7cf75af511eeecf1c7b32731225f9a2 (diff)
added method execution time accounting on individual stack frames in the call tree.
svn path=/trunk/mono-tools/; revision=135972
-rw-r--r--Mono.Profiler/profiler-decoder-library/ChangeLog4
-rw-r--r--Mono.Profiler/profiler-decoder-library/ObjectModel.cs8
2 files changed, 11 insertions, 1 deletions
diff --git a/Mono.Profiler/profiler-decoder-library/ChangeLog b/Mono.Profiler/profiler-decoder-library/ChangeLog
index 7fbf8edb..2b8b4e92 100644
--- a/Mono.Profiler/profiler-decoder-library/ChangeLog
+++ b/Mono.Profiler/profiler-decoder-library/ChangeLog
@@ -1,3 +1,7 @@
+2009-06-12 Massimiliano Mantione <massi@ximian.com>
+ * ObjectModel.cs: added method execution time accounting on
+ individual stack frames in the call tree.
+
2009-06-09 Mike Kestner <mkestner@novell.com>
* ObjectModel.cs: commit Massi's calls StackTrace logging.
diff --git a/Mono.Profiler/profiler-decoder-library/ObjectModel.cs b/Mono.Profiler/profiler-decoder-library/ObjectModel.cs
index fd81e498..4d2ef4c3 100644
--- a/Mono.Profiler/profiler-decoder-library/ObjectModel.cs
+++ b/Mono.Profiler/profiler-decoder-library/ObjectModel.cs
@@ -564,7 +564,13 @@ namespace Mono.Profiler {
LoadedMethod callerMethod = (callerFrame != null)? callerFrame.Method : null;
if (! topMethodIsBeingJitted) {
- topMethod.MethodCalled (counter - stackTop.StartCounter, callerMethod);
+ ulong delta = counter - stackTop.StartCounter;
+
+ topMethod.MethodCalled (delta, callerMethod);
+ StackTrace trace = StackTrace.NewStackTrace (this);
+ if (trace != null) {
+ trace.RegisterCall (delta);
+ }
}
StackFrame.FreeFrame (stackTop);