[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dotgnu-pnet-commits] pnet ChangeLog engine/jitc.c engine/jitc_call.c...
From: |
Klaus Treichel |
Subject: |
[dotgnu-pnet-commits] pnet ChangeLog engine/jitc.c engine/jitc_call.c... |
Date: |
Mon, 21 Apr 2008 19:05:56 +0000 |
CVSROOT: /cvsroot/dotgnu-pnet
Module name: pnet
Changes by: Klaus Treichel <ktreichel> 08/04/21 19:05:56
Modified files:
. : ChangeLog
engine : jitc.c jitc_call.c jitc_setup.c
Log message:
Add support for tracing method calls. (patch by Aleksey)
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pnet/ChangeLog?cvsroot=dotgnu-pnet&r1=1.3538&r2=1.3539
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/jitc.c?cvsroot=dotgnu-pnet&r1=1.80&r2=1.81
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/jitc_call.c?cvsroot=dotgnu-pnet&r1=1.40&r2=1.41
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/jitc_setup.c?cvsroot=dotgnu-pnet&r1=1.27&r2=1.28
Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/ChangeLog,v
retrieving revision 1.3538
retrieving revision 1.3539
diff -u -b -r1.3538 -r1.3539
--- ChangeLog 29 Mar 2008 19:17:22 -0000 1.3538
+++ ChangeLog 21 Apr 2008 19:05:55 -0000 1.3539
@@ -1,3 +1,11 @@
+2008-04-21 Aleksey Demakov <address@hidden>
+
+ * engine/jitc.c: add ILJitTraceIn and ILJitTraceOut functions.
+
+ * engine/jitc_setup.c (JITCoder_Setup): emit ILJitTraceIn call.
+
+ * engine/jitc_call.c (JITCoder_ReturnInsn): emit ILJitTraceOut call.
+
2008-03-29 Radek Polak <address@hidden>
* engine/md_arm.h: Fix array start on ARM EABI.
Index: engine/jitc.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/jitc.c,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -b -r1.80 -r1.81
--- engine/jitc.c 24 Mar 2008 09:04:42 -0000 1.80
+++ engine/jitc.c 21 Apr 2008 19:05:56 -0000 1.81
@@ -321,6 +321,14 @@
static ILJitType _ILJitSignature_ILInterlockedIncrement = 0;
/*
+ * void ILJitTraceIn(ILExecThread *thread, ILMethod *method)
+ * void ILJitTraceOut(ILExecThread *thread, ILMethod *method)
+ */
+#if !defined(IL_CONFIG_REDUCE_CODE) && !defined(IL_WITHOUT_TOOLS)
+static ILJitType _ILJitSignature_ILJitTraceInOut = 0;
+#endif
+
+/*
* Define offsetof macro if not present.
*/
#ifndef offsetof
@@ -2507,6 +2515,17 @@
return 0;
}
+#if !defined(IL_CONFIG_REDUCE_CODE) && !defined(IL_WITHOUT_TOOLS)
+ args[0] = _IL_JIT_TYPE_VPTR;
+ args[1] = _IL_JIT_TYPE_VPTR;
+ returnType = _IL_JIT_TYPE_VOID;
+ if(!(_ILJitSignature_ILJitTraceInOut =
+ jit_type_create_signature(IL_JIT_CALLCONV_CDECL, returnType,
args, 2, 1)))
+ {
+ return 0;
+ }
+#endif
+
return 1;
}
@@ -4680,6 +4699,38 @@
#endif /* _IL_JIT_ENABLE_DEBUG */
+#if !defined(IL_CONFIG_REDUCE_CODE) && !defined(IL_WITHOUT_TOOLS)
+
+static void ILJitTraceIn(ILExecThread *thread, ILMethod *method)
+{
+ /* TODO: nesting level */
+ ILMutexLock(globalTraceMutex);
+ fputs("Entering ", stdout);
+ ILDumpMethodType(stdout, ILProgramItem_Image(method),
+ ILMethod_Signature(method), 0,
+ ILMethod_Owner(method),
+ ILMethod_Name(method), method);
+ putc('\n',stdout);
+ fflush(stdout);
+ ILMutexUnlock(globalTraceMutex);
+}
+
+static void ILJitTraceOut(ILExecThread *thread, ILMethod *method)
+{
+ /* TODO: nesting level */
+ ILMutexLock(globalTraceMutex);
+ fputs("Leaving ", stdout);
+ ILDumpMethodType(stdout, ILProgramItem_Image(method),
+ ILMethod_Signature(method), 0,
+ ILMethod_Owner(method),
+ ILMethod_Name(method), method);
+ putc('\n',stdout);
+ fflush(stdout);
+ ILMutexUnlock(globalTraceMutex);
+}
+
+#endif
+
#define IL_JITC_FUNCTIONS
#include "jitc_arith.c"
#include "jitc_diag.c"
Index: engine/jitc_call.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/jitc_call.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -b -r1.40 -r1.41
--- engine/jitc_call.c 17 Aug 2007 19:18:27 -0000 1.40
+++ engine/jitc_call.c 21 Apr 2008 19:05:56 -0000 1.41
@@ -1710,6 +1710,15 @@
"Return\n");
ILMutexUnlock(globalTraceMutex);
}
+
+ if (jitCoder->flags & IL_CODER_FLAG_METHOD_TRACE)
+ {
+ ILMethod *method = (ILMethod
*)jit_function_get_meta(jitCoder->jitFunction, IL_JIT_META_METHOD);
+ ILJitValue args[2];
+ args[0] = _ILJitCoderGetThread(jitCoder);
+ args[1] = jit_value_create_nint_constant(jitCoder->jitFunction,
_IL_JIT_TYPE_VPTR, (jit_nint) method);
+ jit_insn_call_native(jitCoder->jitFunction, "ILJitTraceOut",
ILJitTraceOut, _ILJitSignature_ILJitTraceInOut, args, 2, JIT_CALL_NOTHROW);
+ }
#endif
#ifdef IL_DEBUGGER
Index: engine/jitc_setup.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/jitc_setup.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -b -r1.27 -r1.28
--- engine/jitc_setup.c 10 Mar 2007 21:54:57 -0000 1.27
+++ engine/jitc_setup.c 21 Apr 2008 19:05:56 -0000 1.28
@@ -52,6 +52,14 @@
ILMethod_Name(method));
ILMutexUnlock(globalTraceMutex);
}
+
+ if (coder->flags & IL_CODER_FLAG_METHOD_TRACE)
+ {
+ ILJitValue args[2];
+ args[0] = _ILJitCoderGetThread(coder);
+ args[1] = jit_value_create_nint_constant(coder->jitFunction,
_IL_JIT_TYPE_VPTR, (jit_nint) method);
+ jit_insn_call_native(coder->jitFunction, "ILJitTraceIn",
ILJitTraceIn, _ILJitSignature_ILJitTraceInOut, args, 2, JIT_CALL_NOTHROW);
+ }
#endif
#ifndef IL_CONFIG_REDUCE_CODE
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] pnet ChangeLog engine/jitc.c engine/jitc_call.c...,
Klaus Treichel <=