Author: leo
Date: Mon Jan 30 10:01:47 2006
New Revision: 11382
Modified:
trunk/src/jit/i386/core.jit
Log:
JIT/x86: set_args and get_results are 2/3 cpu ins now
Modified: trunk/src/jit/i386/core.jit
==============================================================================
--- trunk/src/jit/i386/core.jit (original)
+++ trunk/src/jit/i386/core.jit Mon Jan 30 10:01:47 2006
@@ -1424,8 +1424,11 @@ Parrot_ord_i_sc_i {
; the following 4 ops don't branch but are translated as cpfp
; which adds unneeded overhead - convert to normal ops
-extern Parrot_set_args_pc {
- Parrot_jit_normal_op(jit_info, interpreter);
+; or just JIT the 2 easy ones
+Parrot_set_args_pc {
+ Parrot_jit_emit_get_INTERP(jit_info->native_ptr, emit_EAX);
+ emitm_movl_i_m(NATIVECODE, jit_info->cur_op, emit_EAX, emit_None, 1,
+ offsetof(Interp, current_args));
}
extern Parrot_set_returns_pc {
@@ -1436,8 +1439,12 @@ extern Parrot_get_params_pc {
Parrot_jit_normal_op(jit_info, interpreter);
}
-extern Parrot_get_results_pc {
- Parrot_jit_normal_op(jit_info, interpreter);
+Parrot_get_results_pc {
+ Parrot_jit_emit_get_INTERP(jit_info->native_ptr, emit_EAX);
+ emitm_movl_m_r(NATIVECODE, emit_EAX, emit_EAX, emit_None, 1,
+ offsetof(Interp, ctx.state));
+ emitm_movl_i_m(NATIVECODE, jit_info->cur_op, emit_EAX, emit_None, 1,
+ offsetof(parrot_context_t, current_results));
}
; TODO or,and,not,cmp