All pastes #825715 Raw Edit

Unnamed

public text v1 · immutable
#825715 ·published 2007-12-20 19:29 UTC
rendered paste body
Index: 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 */