diff options
| author | Jean Boussier <jean.boussier@gmail.com> | 2025-08-28 22:53:11 +0200 |
|---|---|---|
| committer | Jean Boussier <jean.boussier@gmail.com> | 2025-08-29 00:02:29 +0200 |
| commit | 3646596e5bd4c445b158be5fd3780e7685aa9b7f (patch) | |
| tree | 27ef01059d91e7cfdae3dfc97795a0f13654f6d7 | |
| parent | b6d4882c05d64aa6cb5ff8761584ae910de67f21 (diff) | |
YJIT: rb_ivar_get_at assume leaf-call when single ractor
The only exception it could raise is if we're in multi ractor mode.
| -rw-r--r-- | yjit/src/codegen.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/yjit/src/codegen.rs b/yjit/src/codegen.rs index f27d09d7d4..ff001b6476 100644 --- a/yjit/src/codegen.rs +++ b/yjit/src/codegen.rs @@ -2947,8 +2947,10 @@ fn gen_get_ivar( } else { asm_comment!(asm, "call rb_ivar_get_at()"); - // The function could raise RactorIsolationError. - jit_prepare_non_leaf_call(jit, asm); + if !assume_single_ractor_mode(jit, asm) { + // The function could raise RactorIsolationError. + jit_prepare_non_leaf_call(jit, asm); + } asm.ccall(rb_ivar_get_at as *const u8, vec![recv, Opnd::UImm((ivar_index as u32).into()), Opnd::UImm(ivar_name)]) }; |
