dotgnu-pnet-commits
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]