[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dotgnu-pnet-commits] pnet ChangeLog engine/jitc.c
From: |
Radek Polak |
Subject: |
[dotgnu-pnet-commits] pnet ChangeLog engine/jitc.c |
Date: |
Fri, 03 Aug 2007 09:16:11 +0000 |
CVSROOT: /sources/dotgnu-pnet
Module name: pnet
Changes by: Radek Polak <radekp> 07/08/03 09:16:11
Modified files:
. : ChangeLog
engine : jitc.c
Log message:
added function for printing metod names of jitted ILMethods (good for
debugging jit engine)
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pnet/ChangeLog?cvsroot=dotgnu-pnet&r1=1.3483&r2=1.3484
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/jitc.c?cvsroot=dotgnu-pnet&r1=1.71&r2=1.72
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/dotgnu-pnet/pnet/ChangeLog,v
retrieving revision 1.3483
retrieving revision 1.3484
diff -u -b -r1.3483 -r1.3484
--- ChangeLog 3 Aug 2007 08:19:59 -0000 1.3483
+++ ChangeLog 3 Aug 2007 09:16:11 -0000 1.3484
@@ -1,5 +1,11 @@
2007-08-03 Radek Polak <address@hidden>
+ * engine/jitc.c: Added function ILJitPrintMethod that can be used from
gdb
+ to print ILMethod at given pc. Works only when _IL_JIT_ENABLE_DEBUG is
+ enabled.
+
+2007-08-03 Radek Polak <address@hidden>
+
* engine/debugger.c: Handle ref and out parameters.
2007-07-26 Klaus Treichel <address@hidden>
Index: engine/jitc.c
===================================================================
RCS file: /sources/dotgnu-pnet/pnet/engine/jitc.c,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -b -r1.71 -r1.72
--- engine/jitc.c 2 Apr 2007 21:54:23 -0000 1.71
+++ engine/jitc.c 3 Aug 2007 09:16:11 -0000 1.72
@@ -4484,6 +4484,76 @@
#endif /* !IL_CONFIG_REDUCE_CODE */
+#ifdef _IL_JIT_ENABLE_DEBUG
+
+/*
+ * Print ILMethod at given pc.
+ * This function is used for printing stacktrace of jitted ILMethods in gdb.
+ * Do not use otherwise!
+ *
+ * Usage:
+ *
+ * 1/ When gdb stops you can use: p ILJitPrintMethod (0x1234567)
+ * where 0x1234567 is frame from bt command.
+ *
+ * 2/ add lines [1] to your ~/.gdbinit
+ * to define new command for printing stacktrace.
+ *
+ * iljit_bt 5 in stopped gdb prints method names in first 5 frames.
+ *
+ * [1]:
+
+ define iljit_bt
+ select-frame 0
+ set $i = 0
+ while ($i < $arg0)
+ set $foo = ILJitPrintMethod ($pc)
+ printf "#%d %s\n", $i, $foo
+ up-silently
+ set $i = $i + 1
+ end
+end
+
+ */
+char *ILJitPrintMethod(void *pc)
+{
+ ILExecThread *thread;
+ ILJITCoder *coder;
+ jit_function_t fn;
+ void *handler = 0;
+ ILMethod *method;
+ char *methodName;
+ char *className;
+ char *result;
+
+ thread = ILExecThreadCurrent();
+ if(thread == 0)
+ {
+ return "unable to get current thread";
+ }
+ coder = (ILJITCoder *)(thread->process->coder);
+ fn = jit_function_from_pc(coder->context, pc, &handler);
+ if(fn == 0)
+ {
+ return "function at given pc not found";
+ }
+ method = (ILMethod *)jit_function_get_meta(fn, IL_JIT_META_METHOD);
+ methodName = ILMethod_Name(method);
+ className = ILClass_Name(ILMethod_Owner(method));
+ result = (char *) ILMalloc(strlen(methodName) + strlen(className) + 2);
+ if(result)
+ {
+ sprintf(result, "%s.%s", className, methodName);
+ return result;
+ }
+ else
+ {
+ return "out of memory";
+ }
+}
+
+#endif /* _IL_JIT_ENABLE_DEBUG */
+
#define IL_JITC_FUNCTIONS
#include "jitc_diag.c"
#include "jitc_locals.c"
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] pnet ChangeLog engine/jitc.c,
Radek Polak <=