diff options
author | Andy Wingo <wingo@pobox.com> | 2019-12-10 17:11:41 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2019-12-10 17:11:41 +0100 |
commit | 16c1a5d2cdb099b6f3fe6ebe42b1c72041e57140 (patch) | |
tree | b8a31d78837e14a993f603f921d28cca5dde9096 /libguile/jit.c | |
parent | 7aad56105f2b8c7769bcf2e29c31c60e59ef2a03 (diff) | |
download | guile-16c1a5d2cdb099b6f3fe6ebe42b1c72041e57140.tar.gz |
Move assert-nargs-ge slow path out of line
* libguile/jit.c (compile_assert_nargs_ge)
(compile_assert_nargs_ge_slow): Move slow path out of line.
Diffstat (limited to 'libguile/jit.c')
-rw-r--r-- | libguile/jit.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/libguile/jit.c b/libguile/jit.c index 5ad85b698..4e37e7b9f 100644 --- a/libguile/jit.c +++ b/libguile/jit.c @@ -1934,24 +1934,17 @@ static void compile_assert_nargs_ge (scm_jit_state *j, uint32_t nlocals) { if (nlocals > 0) - { - jit_gpr_t t = T0; - jit_reloc_t k; - uint32_t saved_state = j->register_state; - - k = emit_branch_if_frame_locals_count_greater_than (j, t, nlocals-1); - emit_store_current_ip (j, t); - emit_call_1 (j, scm_vm_intrinsics.error_wrong_num_args, - thread_operand ()); - jit_patch_here (j->jit, k); - j->register_state = saved_state; - } + add_slow_path_patch + (j, emit_branch_if_frame_locals_count_less_than (j, T0, nlocals)); j->frame_size_min = nlocals; } static void compile_assert_nargs_ge_slow (scm_jit_state *j, uint32_t nlocals) { + emit_store_current_ip (j, T0); + emit_call_1 (j, scm_vm_intrinsics.error_wrong_num_args, + thread_operand ()); } static void |