[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 02/03: Optimizations to subr-call
From: |
Andy Wingo |
Subject: |
[Guile-commits] 02/03: Optimizations to subr-call |
Date: |
Thu, 23 Aug 2018 04:49:13 -0400 (EDT) |
wingo pushed a commit to branch lightning
in repository guile.
commit fd1deab3c33d4697f85cdc1d7539245eb363fd64
Author: Andy Wingo <address@hidden>
Date: Thu Aug 23 10:27:27 2018 +0200
Optimizations to subr-call
* libguile/jit.c (compile_subr_call): Optimizations.
---
libguile/jit.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/libguile/jit.c b/libguile/jit.c
index ee2a1a3..b9d5970 100644
--- a/libguile/jit.c
+++ b/libguile/jit.c
@@ -1082,18 +1082,15 @@ compile_subr_call (scm_jit_state *j, uint32_t idx)
subr = scm_subr_function_by_index (idx);
emit_store_current_ip (j, t);
- emit_load_fp (j, fp);
jit_prepare ();
- for (i = 0; i < j->frame_size; i++)
+ for (i = 2; i <= j->frame_size; i++)
{
- emit_fp_ref_scm (j, t, fp, i);
+ emit_sp_ref_scm (j, t, j->frame_size - i);
jit_pushargr (t);
}
jit_finishi (subr);
jit_retval (ret);
- emit_load_fp (j, fp);
-
immediate = emit_branch_if_immediate (j, ret);
not_values = emit_branch_if_heap_object_not_tc7 (j, ret, t, scm_tc7_values);
emit_call_r_r (j, scm_vm_intrinsics.unpack_values_object, THREAD, ret);
@@ -1102,6 +1099,7 @@ compile_subr_call (scm_jit_state *j, uint32_t idx)
jit_patch (immediate);
jit_patch (not_values);
+ emit_load_fp (j, fp);
emit_subtract_stack_slots (j, SP, fp, 1);
emit_store_sp (j);
jit_str (SP, ret);