diff options
Diffstat (limited to 'src/runtime/c/pgf/jit.c')
| -rw-r--r-- | src/runtime/c/pgf/jit.c | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/src/runtime/c/pgf/jit.c b/src/runtime/c/pgf/jit.c index 09fdf3bc6..963da45c7 100644 --- a/src/runtime/c/pgf/jit.c +++ b/src/runtime/c/pgf/jit.c @@ -569,23 +569,14 @@ pgf_jit_gates(PgfReader* rdr) gates->evaluate_value_lambda = jit_get_ip().ptr; jit_subr_p(JIT_R0, JIT_FP, JIT_SP); jit_blti_i(gates->update_pap, JIT_R0, 2*sizeof(PgfClosure*)); - jit_prepare(2); - jit_movi_i(JIT_R0, sizeof(PgfEnv)); - jit_pusharg_ui(JIT_R0); - jit_ldxi_p(JIT_R0, JIT_VSTATE, offsetof(PgfEvalState,pool)); - jit_pusharg_p(JIT_R0); - jit_finish(gu_malloc); jit_popr_p(JIT_R2); - jit_ldxi_p(JIT_R1, JIT_VCLOS, offsetof(PgfExprThunk,env)); - jit_stxi_p(offsetof(PgfEnv,next), JIT_RET, JIT_R1); jit_popr_p(JIT_R1); - jit_stxi_p(offsetof(PgfEnv,closure), JIT_RET, JIT_R1); - jit_stxi_p(offsetof(PgfExprThunk,env), JIT_VCLOS, JIT_RET); jit_pushr_p(JIT_R2); - jit_prepare(2); + jit_prepare(3); + jit_pusharg_p(JIT_R1); jit_pusharg_p(JIT_VCLOS); jit_pusharg_p(JIT_VSTATE); - jit_finish(pgf_evaluate_expr_thunk); + jit_finish(pgf_evaluate_lambda_application); jit_retval(JIT_VCLOS); jit_ldr_p(JIT_R0, JIT_VCLOS); jit_jmpr(JIT_R0); |
