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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dotgnu-pnet-commits] libjit ChangeLog jit/jit-context.c jit/jit-func...


From: Aleksey Demakov
Subject: [dotgnu-pnet-commits] libjit ChangeLog jit/jit-context.c jit/jit-func...
Date: Fri, 21 Dec 2007 06:42:45 +0000

CVSROOT:        /sources/dotgnu-pnet
Module name:    libjit
Changes by:     Aleksey Demakov <avd>   07/12/21 06:42:45

Modified files:
        .              : ChangeLog 
        jit            : jit-context.c jit-function.c jit-internal.h 
                         jit-interp.c 

Log message:
        fix on-demand compilation for interpreter

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libjit/ChangeLog?cvsroot=dotgnu-pnet&r1=1.327&r2=1.328
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-context.c?cvsroot=dotgnu-pnet&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-function.c?cvsroot=dotgnu-pnet&r1=1.32&r2=1.33
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-internal.h?cvsroot=dotgnu-pnet&r1=1.29&r2=1.30
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-interp.c?cvsroot=dotgnu-pnet&r1=1.17&r2=1.18

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/ChangeLog,v
retrieving revision 1.327
retrieving revision 1.328
diff -u -b -r1.327 -r1.328
--- ChangeLog   20 Dec 2007 17:31:50 -0000      1.327
+++ ChangeLog   21 Dec 2007 06:42:45 -0000      1.328
@@ -1,3 +1,9 @@
+2007-12-21  Aleksey Demakov  <address@hidden>
+
+       * jit/jit-internal.h, jit/jit-context.c, jit/jit-function.c: 
+       * jit/jit-interp.c: use on-demand driver for interpreter but skip
+       indirector/redirector stuff for it.
+
 2007-12-20  Aleksey Demakov  <address@hidden>
 
        * include/jit/jit-plus.h: add jit_context::build_start() and

Index: jit/jit-context.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-context.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- jit/jit-context.c   4 Feb 2007 14:31:33 -0000       1.7
+++ jit/jit-context.c   21 Dec 2007 06:42:45 -0000      1.8
@@ -88,7 +88,7 @@
        jit_mutex_create(&(context->cache_lock));
        context->functions = 0;
        context->last_function = 0;
-       context->on_demand_driver = 0;
+       context->on_demand_driver = _jit_function_compile_on_demand;
        return context;
 }
 
@@ -204,7 +204,14 @@
 @*/
 void jit_context_set_on_demand_driver(jit_context_t context, 
jit_on_demand_driver_func driver)
 {
+       if (driver)
+       {
        context->on_demand_driver = driver;
+       }
+       else
+       {
+               context->on_demand_driver = _jit_function_compile_on_demand;
+       }
 }
 
 /*@

Index: jit/jit-function.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-function.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -b -r1.32 -r1.33
--- jit/jit-function.c  20 Dec 2007 13:47:23 -0000      1.32
+++ jit/jit-function.c  21 Dec 2007 06:42:45 -0000      1.33
@@ -49,10 +49,7 @@
 jit_function_t jit_function_create(jit_context_t context, jit_type_t signature)
 {
        jit_function_t func;
-#if defined(jit_redirector_size)
-       jit_on_demand_driver_func on_demand_driver;
-#endif
-#if defined(jit_redirector_size) || defined(jit_indirector_size)
+#if !defined(JIT_BACKEND_INTERP) && (defined(jit_redirector_size) || 
defined(jit_indirector_size))
        jit_cache_t cache;
 #endif
 
@@ -63,7 +60,7 @@
                return 0;
        }
 
-#if defined(jit_redirector_size) || defined(jit_indirector_size)
+#if !defined(JIT_BACKEND_INTERP) && (defined(jit_redirector_size) || 
defined(jit_indirector_size))
        /* TODO: if the function is destroyed the redirector and indirector 
memory
           is leaked */
 
@@ -101,27 +98,22 @@
 # endif
 
        jit_mutex_unlock(&(context->cache_lock));
-#endif
+#endif /* !defined(JIT_BACKEND_INTERP) && (defined(jit_redirector_size) || 
defined(jit_indirector_size)) */
 
        /* Initialize the function block */
        func->context = context;
        func->signature = jit_type_copy(signature);
 
-#if defined(jit_redirector_size)
+#if !defined(JIT_BACKEND_INTERP) && defined(jit_redirector_size)
        /* If we aren't using interpretation, then point the function's
           initial entry point at the redirector, which in turn will
           invoke the on-demand compiler */
-       on_demand_driver = context->on_demand_driver;
-       if(!on_demand_driver)
-       {
-               on_demand_driver = _jit_function_compile_on_demand;
-       }
        func->entry_point = _jit_create_redirector
-               (func->redirector, (void *) on_demand_driver,
+               (func->redirector, (void *) context->on_demand_driver,
                 func, jit_type_get_abi(signature));
        jit_flush_exec(func->redirector, jit_redirector_size);
 #endif
-# if defined(jit_indirector_size)
+# if !defined(JIT_BACKEND_INTERP) && defined(jit_indirector_size)
        _jit_create_indirector(func->indirector, (void**) &(func->entry_point));
        jit_flush_exec(func->indirector, jit_indirector_size);
 # endif
@@ -839,7 +831,7 @@
                }
 #endif
 
-#if !defined(jit_redirector_size) || !defined(jit_indirector_size)
+#if !defined(JIT_BACKEND_INTERP) && (!defined(jit_redirector_size) || 
!defined(jit_indirector_size))
                /* If the function is recompilable, then we need an extra entry
                   point to properly redirect previous references to the 
function */
                if(func->is_recompilable && !func->indirector)
@@ -1455,9 +1447,6 @@
        (jit_function_t func, jit_type_t signature, void **args, void 
*return_area)
 {
        struct jit_backtrace call_trace;
-#if defined(jit_redirector_size)
-       jit_on_demand_driver_func on_demand_driver;
-#endif
        void *entry;
        jit_jmp_buf jbuf;
 
@@ -1492,16 +1481,7 @@
        }
        else
        {
-#if defined(jit_redirector_size)
-               on_demand_driver = func->context->on_demand_driver;
-               if(!on_demand_driver)
-               {
-                       on_demand_driver = _jit_function_compile_on_demand;
-               }
-               entry = (*on_demand_driver)(func);
-#else
-               entry = _jit_function_compile_on_demand(func);
-#endif
+               entry = (*func->context->on_demand_driver)(func);
        }
 
        /* Get the default signature if necessary */

Index: jit/jit-internal.h
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-internal.h,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -b -r1.29 -r1.30
--- jit/jit-internal.h  16 Dec 2007 11:46:54 -0000      1.29
+++ jit/jit-internal.h  21 Dec 2007 06:42:45 -0000      1.30
@@ -398,17 +398,19 @@
        /* The function to call to perform on-demand compilation */
        jit_on_demand_func      on_demand;
 
-#ifdef jit_redirector_size
+#ifndef JIT_BACKEND_INTERP
+# ifdef jit_redirector_size
        /* Buffer that contains the redirector for this function.
           Redirectors are used to support on-demand compilation */
        unsigned char           *redirector;
-#endif
+# endif
 
        /* Buffer that contains the indirector for this function.
           The indirector jumps to the address that is currently
           stored in the entry_point field. Indirectors are used
           to support recompilation and on-demand compilation. */
        unsigned char           *indirector;
+#endif
 };
 
 /*

Index: jit/jit-interp.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-interp.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- jit/jit-interp.c    16 Oct 2006 02:27:24 -0000      1.17
+++ jit/jit-interp.c    21 Dec 2007 06:42:45 -0000      1.18
@@ -3308,7 +3308,7 @@
                        _jit_backtrace_push(&call_trace, pc);
                        if(!entry)
                        {
-                               entry = 
_jit_function_compile_on_demand(call_func);
+                               entry = 
(*call_func->context->on_demand_driver)(call_func);
                        }
                        _jit_run_function((jit_function_interp_t)entry,
                                          stacktop,
@@ -3324,7 +3324,7 @@
                        entry = call_func->entry_point;
                        if(!entry)
                        {
-                               entry = 
_jit_function_compile_on_demand(call_func);
+                               entry = 
(*call_func->context->on_demand_driver)(call_func);
                        }
                        VM_PERFORM_TAIL((jit_function_interp_t)entry);
                }
@@ -3360,7 +3360,7 @@
                        _jit_backtrace_push(&call_trace, pc);
                        if(!entry)
                        {
-                               entry = 
_jit_function_compile_on_demand(call_func);
+                               entry = 
(*call_func->context->on_demand_driver)(call_func);
                        }
                        _jit_run_function((jit_function_interp_t)entry,
                                          stacktop,
@@ -3380,7 +3380,7 @@
                        entry = call_func->entry_point;
                        if(!entry)
                        {
-                               entry = 
_jit_function_compile_on_demand(call_func);
+                               entry = 
(*call_func->context->on_demand_driver)(call_func);
                        }
                        VM_PERFORM_TAIL((jit_function_interp_t)entry);
                }
@@ -5009,8 +5009,7 @@
        }
        else
        {
-               entry = (jit_function_interp_t)
-                       _jit_function_compile_on_demand(func);
+               entry = 
(jit_function_interp_t)(*func->context->on_demand_driver)(func);
        }
 
        /* Populate the low-level argument buffer */




reply via email to

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