guile-commits
[Top][All Lists]
Advanced

[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);



reply via email to

[Prev in Thread] Current Thread [Next in Thread]