rendered paste bodyIndex: jit-context.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-context.c,v
retrieving revision 1.7
diff -u -r1.7 jit-context.c
--- jit-context.c 4 Feb 2007 14:31:33 -0000 1.7
+++ jit-context.c 20 Dec 2007 19:26:12 -0000
@@ -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)
{
- context->on_demand_driver = driver;
+ if (driver)
+ {
+ context->on_demand_driver = driver;
+ }
+ else
+ {
+ context->on_demand_driver = _jit_function_compile_on_demand;
+ }
}
/*@
Index: jit-function.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-function.c,v
retrieving revision 1.32
diff -u -r1.32 jit-function.c
--- jit-function.c 20 Dec 2007 13:47:23 -0000 1.32
+++ jit-function.c 20 Dec 2007 19:26:13 -0000
@@ -49,9 +49,6 @@
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)
jit_cache_t cache;
#endif
@@ -111,13 +108,8 @@
/* 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
@@ -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-interp.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-interp.c,v
retrieving revision 1.17
diff -u -r1.17 jit-interp.c
--- jit-interp.c 16 Oct 2006 02:27:24 -0000 1.17
+++ jit-interp.c 20 Dec 2007 19:26:14 -0000
@@ -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 */